JSON-Schema-Validator

Valideer JSON tegen een JSON Schema (Draft 2020-12) en krijg fouten met volledige instantiepaden

JSON

Schema

JSON-Schema-Validator

Valideer JSON tegen een JSON Schema (Draft 2020-12) en krijg fouten met volledige instantiepaden

Functies

  • Valideert JSON-instanties tegen elk JSON Schema met Ajv (de feitelijke referentie-implementatie), met volledige ondersteuning voor Draft-07, 2019-09 en 2020-12
  • Foutenrapport vermeldt elke mislukking als `pad: bericht` — instantiepaden volgen RFC 6901 JSON Pointer-notatie, zodat je direct naar de foutieve knoop in geneste data springt
  • Alle fouten worden in één doorloop (allErrors: true) gemeld in plaats van bij de eerste te stoppen — zie alle issues tegelijk
  • Strict-mode-compilatie uitgeschakeld zodat niet-standaard of uitgebreide schemas blijven compileren; allowUnionTypes aan voor schemas die uniontypes gebruiken
  • Voorbeeld-laden-knop vult beide panelen met een klein voorbeeld (object met verplichte id en name plus tags-array) zodat je de validator ziet werken zonder iets te typen
  • Fouten-kopiëren-knop geeft de volledige lijst als regelgescheiden `pad: bericht`-blok — plak direct in een ticket of testfixture
  • Puur client-side: Ajv draait in je browser, geen JSON of schema wordt naar een server geüpload, en de tool werkt offline zodra de pagina geladen is
  • Aparte parsefoutrapportage onderscheidt JSON-malformatie van schema-schendingen — je weet altijd of syntax of contract te repareren

Hoe te gebruiken

  1. Plak de te valideren JSON-instantie in het linker tekstvak.
  2. Plak je JSON Schema in het rechter tekstvak — gebruik Draft 2020-12, 2019-09 of Draft-07; Ajv kiest automatisch op basis van $schema.
  3. Klik Valideren. Als beide invoeren schoon parsen, compileert Ajv het schema en draait de validatie.
  4. Lees het resultaat: een groene Geldig-banner betekent dat de instantie past; anders toont elke mislukking het JSON Pointer-pad en de leesbare Ajv-melding.
  5. Klik Fouten kopiëren om het volledige rapport als `pad: bericht`-regels op te halen voor delen of opslag in een fixture.
  6. Gebruik Voorbeeld laden om beide panelen met een werkend voorbeeld te vullen als je het gedrag wilt verifiëren voordat je eigen data plakt.

Tips en best practices

  • Voeg altijd een $schema-veld in je schema toe zodat Ajv de juiste draft-semantiek kiest.
  • Verkies additionalProperties: false tijdens ontwikkeling om typefouten in veldnamen vroeg te vangen.
  • Gebruik $defs (of definitions in Draft-07) om gemeenschappelijke subschemas te delen — refs maken schemas DRY en herzienbaar.
  • Als validatie lokaal slaagt maar in CI faalt, controleer dan of dezelfde Ajv-versie en drafts in beide omgevingen worden gebruikt.
  • Bewaar de uitvoer van Fouten kopiëren in je testfixtures zodat regressies als schema-schendingsdiffs opduiken.

Veelgestelde vragen

Welke JSON Schema-drafts worden ondersteund?

Draft-07, Draft 2019-09 en Draft 2020-12. Ajv selecteert het meta-schema automatisch op basis van het $schema-veld; als weggelaten valt het terug op Draft-07-semantiek. De nieuwere 2020-12-spec vervangt definitions door $defs en items door prefixItems/items — zowel oude als nieuwe sleutelwoorden worden geaccepteerd.

Wat betekent het pad in een fout?

Ajv rapporteert instancePath in RFC 6901 JSON Pointer-notatie: '/users/0/email' betekent 'de email-eigenschap van de eerste gebruiker'. De wortel is de lege string (in de UI weergegeven als $). Dit maakt navigeren naar het falende veld in geneste data eenvoudig.

Waarom compileert mijn schema niet?

Veelvoorkomende oorzaken: malformed JSON (extra komma's, enkele aanhalingstekens, ongetypte sleutels); een $ref die naar een niet-bestaande definitie wijst; of een sleutelwoord in strict mode dat Ajv niet herkent. Het paneel met schema-parsefouten toont Ajv's exacte compile-fout; strict mode staat hier al uit, dus de meeste niet-standaard schemas compileren toch.

Waarom krijg ik een 'unknown keyword'- of 'unknown format'-fout?

Standaard JSON Schema-sleutelwoorden (type, required, properties enz.) zijn ingebouwd. Aangepaste formaatnamen als 'date-time', 'uri', 'email' worden standaard niet gevalideerd — Ajv behandelt ze als annotaties tenzij je ajv-formats laadt. Als formaten gecontroleerd moeten worden, draai de validatie in een buildstap met ajv-formats geïnstalleerd.

Stopt de validator bij de eerste fout?

Nee. Ajv is geconfigureerd met allErrors: true, dus elke mislukking wordt gerapporteerd. Voor diep geneste fouten kan dit uitvoerig zijn; wil je alleen de eerste, geef dan JSON+schema aan je eigen ajv()-aanroep met allErrors: false in je build.

Werkt het voor zeer grote JSON-documenten?

Ja, maar het juiste patroon in code is compile-once-validate-many. Deze tool compileert opnieuw bij elke Valideren-klik, wat prima is voor dev-tijd-controles maar niet voor productie-hot-paths. De hier gebruikte Ajv-build is de standaard ESM-bundel; verwacht milliseconden compileertijden voor typische schemas.

Worden mijn JSON en schema ergens heen gestuurd?

Nee. Beide tekstvakken blijven in je browser; Ajv draait lokaal; we loggen, slaan op of telemetreren de inhoud niet. Te verifiëren in het Netwerk-tabblad van DevTools — bij klikken op Valideren is er geen netwerkaanroep.

Wat is het verschil met het schema-tabblad in JSON Formatter?

Het schema-tabblad van JSON Formatter gebruikt dezelfde Ajv-ondersteunde SchemaService voor eenmalige controles naast formatteren, JSONPath en boomweergave. Deze losse validator biedt je twee grote plakvelden, een voorbeeldlader, fouten-kopiëren-export en één gewijde URL om als favoriet te bewaren of te delen — beter wanneer validatie je enige taak is.