Utilia

JSON Schema-validator

Valider et JSON-dokument mod et JSON Schema i din browser. Hver fejl vises med sin instanssti, sit nøgleord og sin schema-sti. Fejlmeddelelserne er på engelsk.

Sådan validerer du JSON mod et schema

  1. Indsæt dit schema i JSON Schema og dine data i JSON-dokument, eller vælg et færdigt tilfælde under Eksempel.
  2. Lad Draft stå på Automatisk ($schema) for at bruge den version, der er angivet i schemaets $schema, eller gennemtving draft 4, 7, 2019-09 eller 2020-12.
  3. Valideringen kører, mens du skriver. Validér kører den igen. Formatér begge rykker begge tekster ind igen.
  4. Læs resultatet: en grøn linje, når dokumentet er gyldigt, ellers en tabel med fejl.

Sådan læser du fejltabellen

Hver række er én regel, der ikke blev overholdt:

  • Instanssti er en JSON Pointer til den værdi, der fejlede. /roles/1 er det andet element i roles. (rod) er hele dokumentet.
  • Nøgleord er den schema-regel, der fejlede: type, required, minimum, pattern, format, additionalProperties og så videre.
  • Meddelelse forklarer fejlen, for eksempel 0 is less than 1.
  • Schema-sti peger på nøgleordet inde i schemaet, som /properties/id/minimum, så du hurtigt kan finde reglen.

Valideringen stopper ikke ved det første problem: Alle fejl vises på listen. Når en objektegenskab fejler, melder validatoren en opsummering (»Property “id” does not match schema«) efterfulgt af den præcise årsag. Vis kun de mest specifikke fejl skjuler disse opsummeringer. Fjern markeringen for at se hele kæden. Fejl under anyOf og oneOf bevares altid sammen med de specifikke fejl for hver gren, fordi de kun giver mening sammen.

Fejlmeddelelserne i kolonnen Meddelelse kommer fra validatoren og er på engelsk. Resten af siden er på dansk.

Hvad der understøttes

  • Drafts: 4, 6 (valideres med reglerne for draft 7), 7, 2019-09 og 2020-12, inklusive $defs/definitions, lokal $ref, if/then/else, dependentRequired, dependentSchemas, prefixItems, unevaluatedProperties og unevaluatedItems.
  • Formater: date, time, date-time, duration, email, hostname, ipv4, ipv6, uri, uri-reference, uri-template, uuid, regex, json-pointer og relative-json-pointer kontrolleres. Ukendte formater ignoreres, som specifikationen tillader.
  • Referencer: $ref kan pege hvor som helst inde i schemaet, også på et $id, det selv erklærer. Eksterne schemaer downloades aldrig. En reference til en anden URL meldes som uløst.

Dette værktøj validerer dokumenter mod dit schema. Det tjekker ikke, at selve schemaet følger meta-schemaet, men det advarer om ukendte type-navne som "strin" eller "int", en almindelig tastefejl, som validatorer ellers ignorerer uden at sige noget.

Eksemplerne

  • Brugerprofil (2020-12): required, strenglængder, format: email, en enum inde i items, uniqueItems og additionalProperties: false.
  • Produktliste med $ref (draft-07): en liste, hvis elementer henviser til #/definitions/product, med et pattern for varenummeret og en pris med exclusiveMinimum.
  • Konfiguration med if/then (2019-09): et certifikat, der kun er påkrævet i HTTPS-tilstand, en oneOf mellem e-mail og URI og talgrænser.

Hvert eksempel kommer med et dokument med bevidste fejl, så du kan se, hvordan fejlene ser ud.

Ofte stillede spørgsmål

Bliver mine data uploadet?

Nej. Schemaet og dokumentet valideres i din browser. Intet sendes til en server.

Hvorfor er mit schemas $ref »uløst«?

Validatoren kender kun det schema, du har indsat. En $ref til en anden fil eller URL kan ikke følges. Kopiér de refererede definitioner ind i $defs, og peg på #/$defs/… i stedet.

Hvilken draft skal jeg bruge?

Brug den, dit projekt bruger, og angiv den med $schema. Til nye schemaer er 2020-12 den aktuelle version. OpenAPI 3.1 bruger den også.

Hvorfor afviser integer ikke 2.0?

Det gør den ikke: JSON Schema behandler 2.0 som et heltal, fordi værdien er hel. 2.5 fejler "type": "integer".

Virker det offline?

Ja. Når siden er indlæst, og du har kørt en første validering (som indlæser validatoren), er der ikke brug for nogen forbindelse.