Utilia

JSON Schema-validerare

Validera ett JSON-dokument mot ett JSON Schema i webbläsaren. Varje fel listas med instanssökväg, nyckelord och schemasökväg.

Så validerar du JSON mot ett schema

  1. Klistra in ditt schema i JSON Schema och dina data i JSON-dokument, eller välj ett färdigt fall under Exempel.
  2. Låt Draft stå på Automatiskt ($schema) för att använda den version som schemats $schema anger, eller tvinga fram draft 4, 7, 2019-09 eller 2020-12.
  3. Valideringen körs medan du skriver, och Validera kör den igen. Formatera båda gör om indragen i båda texterna.
  4. Läs resultatet: en grön rad när dokumentet är giltigt, annars en tabell med fel.

Så läser du feltabellen

Varje rad är en regel som inte uppfylldes:

  • Instanssökväg är en JSON Pointer till värdet som inte godkändes. /roles/1 är det andra elementet i roles, och (rot) är hela dokumentet.
  • Nyckelord är den schemaregel som inte uppfylldes: type, required, minimum, pattern, format, additionalProperties och så vidare.
  • Meddelande förklarar felet, till exempel 0 is less than 1. Meddelandena från valideraren är på engelska.
  • Schemasökväg pekar på nyckelordet i schemat, till exempel /properties/id/minimum, så att du snabbt hittar regeln.

Valideringen stannar inte vid det första problemet: alla fel listas. När en egenskap i ett objekt inte godkänns rapporterar valideraren en sammanfattning (”Property “id” does not match schema”) följd av den exakta orsaken. Visa bara de mest specifika felen döljer de sammanfattningarna. Avmarkera alternativet för att se hela kedjan. Fel under anyOf och oneOf hålls alltid ihop med de specifika felen i varje gren, eftersom de bara blir begripliga tillsammans.

Vad som stöds

  • Drafts: 4, 6 (valideras med reglerna för draft 7), 7, 2019-09 och 2020-12, inklusive $defs/definitions, lokala $ref, if/then/else, dependentRequired, dependentSchemas, prefixItems, unevaluatedProperties och unevaluatedItems.
  • Format: date, time, date-time, duration, email, hostname, ipv4, ipv6, uri, uri-reference, uri-template, uuid, regex, json-pointer och relative-json-pointer kontrolleras. Okända format ignoreras, vilket specifikationen tillåter.
  • Referenser: $ref kan peka var som helst i schemat, även på ett $id som schemat deklarerar. Externa scheman laddas aldrig ner, och en referens till en annan URL rapporteras som olöst.

Verktyget validerar dokument mot ditt schema. Det kontrollerar inte att själva schemat följer metaschemat, men det varnar för okända type-namn som "strin" eller "int", ett vanligt stavfel som validerare annars ignorerar i tysthet.

Exemplen

  • Användarprofil (2020-12): required, stränglängder, format: email, en enum i items, uniqueItems och additionalProperties: false.
  • Produktlista med $ref (draft-07): en lista vars element refererar till #/definitions/product, med ett pattern för artikelnumret (SKU) och ett pris med exclusiveMinimum.
  • Konfiguration med if/then (2019-09): ett certifikat som bara krävs i HTTPS-läge, ett oneOf mellan e-post och URI, och numeriska gränser.

Varje exempel har ett dokument med avsiktliga fel, så att du ser hur felen ser ut.

Vanliga frågor

Laddas mina data upp?

Nej. Schemat och dokumentet valideras i din webbläsare. Ingenting skickas till en server.

Varför är mitt schemas $ref ”olöst”?

Valideraren känner bara till det schema du klistrade in. En $ref till en annan fil eller URL kan inte följas. Kopiera de refererade definitionerna till $defs och peka på #/$defs/… i stället.

Vilken draft ska jag använda?

Använd den som ditt projekt riktar sig mot, och deklarera den med $schema. För nya scheman är 2020-12 den aktuella versionen, och OpenAPI 3.1 använder den också.

Varför avvisar integer 2.0?

Det gör den inte: JSON Schema behandlar 2.0 som ett heltal eftersom värdet är helt. 2.5 underkänns däremot av "type": "integer".

Fungerar det offline?

Ja. När sidan har laddats och du har kört en första validering (som laddar valideraren) behövs ingen anslutning.