JSON Schema-validator

Klistra in ett schema och ett dokument, välj utkast, så jämför validatorn dokumentet med alla nyckelord som schemat använder – type, required, enum, oneOf, $ref, if/then/else och anpassad format – och rapporterar varje överträdelse med en JSONPath-liknande pekare till exakt den felaktiga platsen.

Så validerar du mot ett schema

  1. 1

    Klistra in schemat

    JSON Schema-utkast 04, 07 eller 2020-12. Nyckelordet `$schema` (om det finns) väljer automatiskt rätt utkast.

  2. 2

    Klistra in dokumentet

    Den JSON du vill validera måste först vara giltig JSON – syntaxfel visas innan schemat utvärderas.

  3. 3

    Validera

    Varje överträdelse rapporteras med en JSON-pekare (`/user/email`) och det nyckelord som misslyckades (`format`, `required` osv.).

  4. 4

    Åtgärda och validera på nytt

    Redigera valfri sida så uppdateras statusen i realtid.

Nyckelord som stöds

Kärna: type, enum, const, multipleOf, maximum, minimum, exclusiveMaximum, exclusiveMinimum, maxLength, minLength, pattern, maxItems, minItems, uniqueItems, maxContains, minContains, maxProperties, minProperties, required, dependentRequired.

Sammansättning: allOf, anyOf, oneOf, not.

Applikatorer: properties, patternProperties, additionalProperties, items, prefixItems, contains, propertyNames.

Villkorliga: if, then, else, dependentSchemas.

Referenser: $ref, $defs, $id, $anchor.

Format (med validering när det är aktiverat): date-time, date, time, duration, email, hostname, ipv4, ipv6, uri, uuid, regex.

Felutdata

FAIL  /user/email        format            "not-an-email" is not a valid "email"
FAIL  /user/age          minimum           -3 is less than the minimum 0
FAIL  /orders/0/total    type              "42" is not of type "number"
FAIL  /                  required          missing required property "shippingAddress"

Varje fel anger både sökvägen och det nyckelord som misslyckades, vilket gör det enkelt att hitta i din editor.

Skillnader mellan utkast som ställer till problem

Nyckelord Utkast 04 Utkast 07 Utkast 2020-12
id mot $id id $id $id
exclusiveMaximum som bool Ja Tal Tal
items-arraysyntax items items prefixItems
$ref tillåter syskonnyckelord Nej Nej Ja

Ställ in rätt utkast; att validera ett schema med utkast 04 som 2020-12 kommer att feltolka id och en del andra finesser.

Typiska arbetsflöden

  • Testning av API-kontrakt: kör det genererade/uppdaterade OpenAPI-schemat mot verkliga exempelsvar innan en driftsättning.
  • Härdning av konfiguration: validera varje YAML/JSON-konfiguration i CI mot ett schema innan sammanslagning.
  • Datainmatning: avvisa nyttolaster som inte matchar den förväntade formen tidigt, med ett tydligt felmeddelande.

Vanliga misstag

  • Att glömma att framtvinga format. Som standard behandlar de flesta validatorer okända format som enbart annotering. Aktivera strikt formatvalidering för att faktiskt avvisa ogiltiga e-postadresser och datum.
  • Överanvändning av oneOf. Om två grenar av oneOf överlappar misslyckas dokumentet (det måste matcha exakt en). Använd anyOf eller diskriminatormönster.
  • Snäva scheman med additionalProperties: false. Att lägga till ett nytt valfritt fält blir en bakåtinkompatibel ändring. Utelämna det om du inte verkligen vill ha ett slutet objekt.

Vanliga frågor

Ja. Utkast 2020-12, 07 och 04 stöds alla. Validatorn läser nyckelordet $schema från ditt dokument för att välja rätt, eller faller tillbaka på väljaren i gränssnittet.

Standardformat (email, date-time, uuid, ipv4 osv.) valideras när strikt formatvalidering är aktiverad. Anpassade format som deklareras i ditt schema behandlas som enbart annotering, om du inte anger en regex med pattern.

Interna referenser (#/$defs/foo) löses upp automatiskt. Externa HTTP-referenser hämtas inte som standard – av säkerhetsskäl. Infoga dina externa referenser inline först, eller använd ett dedikerat verktyg som stöder uppslag av $ref på distans.

Ja. Både schemat och dokumentet förblir lokala. Inklistrat innehåll laddas aldrig upp – säkert för interna API-kontrakt och känsliga data.

Relaterade verktyg

Verktyget finns på andra språk