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
- Plak de te valideren JSON-instantie in het linker tekstvak.
- Plak je JSON Schema in het rechter tekstvak — gebruik Draft 2020-12, 2019-09 of Draft-07; Ajv kiest automatisch op basis van $schema.
- Klik Valideren. Als beide invoeren schoon parsen, compileert Ajv het schema en draait de validatie.
- 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.
- Klik Fouten kopiëren om het volledige rapport als `pad: bericht`-regels op te halen voor delen of opslag in een fixture.
- 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.