JSON Schema-validator

Plak een schema en een document, kies het ontwerp; de validator controleert het document aan de hand van elk sleutelwoord dat uw schema gebruikt, type, required, enum, oneOf, $ref, if/then/else en de aangepaste format, en rapporteert elke schending met een JSONPath-achtige verwijzing naar de exacte foutlocatie.

Hoe valideer je aan de hand van een schema

  1. 1

    Plak het schema

    JSON-schema-ontwerp 04, 07 of 2020-12. Het sleutelwoord `$schema` (indien aanwezig) selecteert automatisch het bijbehorende ontwerp.

  2. 2

    Plak het document

    De JSON die u wilt valideren, moet eerst geldige JSON zijn; syntaxisfouten worden weergegeven voordat het schema wordt geëvalueerd.

  3. 3

    Valideer

    Elke schending wordt gemeld met een JSON-pointer (`/user/email`) en het mislukte sleutelwoord (`format`, `required`, enz.).

  4. 4

    Corrigeer en valideer opnieuw

    Bewerk een van beide zijden en de status wordt direct bijgewerkt.

Ondersteunde sleutelwoorden

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

Samenstelling: allOf, anyOf, oneOf, not.

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

Voorwaardelijk: if, then, else, dependentSchemas.

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

Formaten (met validatie wanneer ingeschakeld): date-time, date, time, duration, email, hostname, ipv4, ipv6, uri, uuid, regex.

Foutuitvoer

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"

Elke fout bevat het pad en het mislukte sleutelwoord, zodat u het snel in uw editor kunt terugvinden.

Ontwerpverschillen die problemen veroorzaken

Sleutelwoord Ontwerp 04 Ontwerp 07 Ontwerp 2020-12
id versus $id id $id $id
exclusiveMaximum als bool Ja Getal Getal
Syntaxis van de items-array items items prefixItems
$ref staat sleutelwoorden op hetzelfde niveau toe Nee Nee Ja

Stel het juiste ontwerp in; een schema van ontwerp 04 valideren als 2020-12 zal id en enkele andere subtiliteiten verkeerd interpreteren.

Typische workflows

  • API-contracttests: voer vóór een implementatie het gegenereerde/bijgewerkte OpenAPI-schema uit tegen echte voorbeeldantwoorden.
  • Configuratie verstevigen: valideer elke YAML/JSON-configuratie in de CI aan de hand van een schema voordat u samenvoegt.
  • Gegevensinvoer: weiger payloads die niet overeenkomen met de verwachte vorm vroegtijdig, met een duidelijke foutmelding.

Veelvoorkomende fouten

  • Het afdwingen van format vergeten. Standaard behandelen de meeste validators onbekende formaten alleen als annotatie. Schakel strikte formaatvalidatie in om ongeldige e-mails en datums daadwerkelijk af te wijzen.
  • Overmatig gebruik van oneOf. Als twee takken van oneOf elkaar overlappen, mislukt het document (het moet precies met één overeenkomen). Gebruik anyOf of discriminatorpatronen.
  • Strakke schema’s met additionalProperties: false. Het toevoegen van een nieuw optioneel veld wordt een brekende wijziging. Laat het weg, tenzij u echt een gesloten object wilt.

Veelgestelde vragen

Ja. Ontwerp 2020-12, 07 en 04 worden allemaal ondersteund. De validator leest het sleutelwoord $schema uit uw document om het juiste te selecteren, of valt terug op de selector in de interface.

Standaardformaten (email, date-time, uuid, ipv4, enz.) worden gevalideerd wanneer strikte formaatvalidatie is ingeschakeld. Aangepaste formaten die in uw schema zijn gedeclareerd, worden alleen als annotatie behandeld, tenzij u een regex met pattern opgeeft.

Interne referenties (#/$defs/foo) worden automatisch opgelost. Externe HTTP-referenties worden standaard niet opgehaald, om veiligheidsredenen. Plaats uw externe referenties eerst inline, of gebruik een speciale tool die het op afstand oplossen van $ref ondersteunt.

Ja. Zowel het schema als het document blijven lokaal. Geplakte inhoud wordt nooit geüpload, veilig voor interne API-contracten en gevoelige gegevens.

Gerelateerde tools

Tool beschikbaar in andere talen