Utilia

JSON Schema-validator

Valider et JSON-dokument mot et JSON Schema i nettleseren din. Hver feil listes med forekomststi, nøkkelord og schema-sti. Feilmeldingene er på engelsk.

Slik validerer du JSON mot et schema

  1. Lim inn schemaet i JSON Schema og dataene i JSON-dokument, eller velg et ferdig tilfelle under Eksempel.
  2. La Versjon (draft) stå på Automatisk ($schema) for å bruke versjonen schemaets $schema oppgir, eller tving draft 4, 7, 2019-09 eller 2020-12.
  3. Valideringen kjører mens du skriver, og Valider kjører den på nytt. Formater begge rykker inn begge tekstene på nytt.
  4. Les resultatet: en grønn linje når dokumentet er gyldig, ellers en tabell med feil.

Feilmeldingene fra valideringsmotoren er på engelsk. Resten av grensesnittet er på norsk.

Slik leser du feiltabellen

Hver rad er én regel som feilet:

  • Forekomststi er en JSON Pointer til verdien som feilet. /roles/1 er det andre elementet i roles, og (rot) er hele dokumentet.
  • Nøkkelord er schema-regelen som feilet: type, required, minimum, pattern, format, additionalProperties og så videre.
  • Melding forklarer feilen, for eksempel 0 is less than 1.
  • Schema-sti peker på nøkkelordet inne i schemaet, som /properties/id/minimum, slik at du raskt finner regelen.

Valideringen stopper ikke ved det første problemet: alle feil listes. Når en objektegenskap feiler, melder valideringen en oppsummering («Property “id” does not match schema») etterfulgt av den presise årsaken. Vis bare de mest spesifikke feilene skjuler slike oppsummeringer. Fjern avkrysningen for å se hele kjeden. Feil under anyOf og oneOf beholdes alltid sammen med de spesifikke feilene for hver gren, fordi de bare gir mening sammen.

Hva som støttes

  • Versjoner: 4, 6 (valideres med reglene for draft 7), 7, 2019-09 og 2020-12, inkludert $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. Ukjente formater ignoreres, slik spesifikasjonen tillater.
  • Referanser: $ref kan peke hvor som helst inne i schemaet, også til en $id det selv erklærer. Eksterne schemaer lastes aldri ned, og en referanse til en annen URL meldes som uløst.

Dette verktøyet validerer dokumenter mot schemaet ditt. Det kontrollerer ikke at selve schemaet følger metaschemaet, men det advarer om ukjente type-navn som "strin" eller "int", en vanlig skrivefeil som valideringsmotorer ellers ignorerer uten lyd.

Eksemplene

  • Brukerprofil (2020-12): required, strenglengder, format: email, en enum inne i items, uniqueItems og additionalProperties: false.
  • Produktliste med $ref (draft-07): en liste der elementene refererer til #/definitions/product, med et pattern for SKU og en pris med exclusiveMinimum.
  • Konfigurasjon med if/then (2019-09): et sertifikat som bare kreves i HTTPS-modus, en oneOf mellom e-post og URI, og tallgrenser.

Hvert eksempel kommer med et dokument som har bevisste feil, slik at du kan se hvordan feilene ser ut.

Ofte stilte spørsmål

Lastes dataene mine opp?

Nei. Schemaet og dokumentet valideres i nettleseren din, og ingenting sendes til en server.

Hvorfor er $ref i schemaet mitt «uløst»?

Valideringen kjenner bare schemaet du limte inn. En $ref til en annen fil eller URL kan ikke følges. Kopier de refererte definisjonene inn i $defs og pek til #/$defs/… i stedet.

Hvilken versjon bør jeg bruke?

Bruk den prosjektet ditt retter seg mot, og deklarer den med $schema. For nye schemaer er 2020-12 gjeldende versjon, og OpenAPI 3.1 bruker den også.

Hvorfor avviser ikke integer 2.0?

Det gjør den ikke: JSON Schema behandler 2.0 som et heltall fordi verdien er hel. 2.5 feiler "type": "integer".

Fungerer det uten nett?

Ja. Når siden er lastet og du har kjørt en første validering (som laster valideringsmotoren), trengs ingen tilkobling.