JSON-Schema-validator
Validera JSON mot ett JSON Schema (Draft 2020-12) och få fel med fullständiga instanssökvägar
JSON
Schema
JSON-Schema-validator
Validera JSON mot ett JSON Schema (Draft 2020-12) och få fel med fullständiga instanssökvägar
Funktioner
- Validerar JSON-instanser mot vilket JSON Schema som helst med Ajv (de facto referensimplementationen), med fullt stöd för Draft-07, 2019-09 och 2020-12
- Felrapporten listar varje misslyckande som `sökväg: meddelande` — instans-sökvägar följer RFC 6901 JSON Pointer-notation så du kan ta dig direkt till felande nod i nästlade data
- Alla fel rapporteras i en enda genomgång (allErrors: true) istället för att stanna vid det första — se alla problem på en gång
- Strict-mode-kompilering avstängd så icke-standard eller utökade scheman ändå kompilerar; allowUnionTypes påslagen för scheman med union-typer
- Ladda exempel-knappen fyller båda rutorna med ett litet exempel (objekt med required id och name plus tags-array) så du ser validatorn jobba utan att skriva
- Kopiera fel-knappen ger hela fellistan som radseparerat `sökväg: meddelande`-block — klistra direkt i ett ärende eller testfixtur
- Helt klientsida: Ajv kör i din webbläsare, ingen JSON eller schema laddas upp till en server, och verktyget fungerar offline efter att sidan laddats
- Separat tolkningsfelrapport skiljer JSON-malformat från schema-brott — du vet alltid om du ska fixa syntax eller kontrakt
Så använder du
- Klistra in JSON-instansen som ska valideras i vänstra textrutan.
- Klistra in ditt JSON Schema i högra rutan — använd Draft 2020-12, 2019-09 eller Draft-07; Ajv väljer automatiskt utifrån $schema.
- Klicka Validera. Om båda indata tolkas rent kompilerar Ajv schemat och kör valideringen.
- Läs resultatet: en grön Giltig-banner betyder att instansen matchar; annars visar varje misslyckande JSON Pointer-sökvägen och det läsbara Ajv-meddelandet.
- Klicka Kopiera fel för att hämta hela rapporten som `sökväg: meddelande`-rader för delning eller lagring i en fixturfil.
- Använd Ladda exempel för att fylla båda rutorna med ett fungerande exempel om du vill verifiera beteendet före du klistrar in egen data.
Tips och bästa praxis
- Inkludera alltid ett $schema-fält i ditt schema så att Ajv väljer rätt draft-semantik.
- Föredra additionalProperties: false under utveckling för att fånga stavfel i fältnamn tidigt.
- Använd $defs (eller definitions i Draft-07) för att dela gemensamma subscheman — refs gör scheman DRY och granskningsbara.
- När valideringen passerar lokalt men faller i CI, kontrollera att samma Ajv-version och drafts används i båda miljöerna.
- Spara Kopiera fel-utdata i dina testfixturer så att regressioner dyker upp som schema-brottsdiffar.
Vanliga frågor
Vilka JSON Schema-drafts stöds?
Draft-07, Draft 2019-09 och Draft 2020-12. Ajv väljer metaschemat automatiskt utifrån fältet $schema; om utelämnat faller det tillbaka på Draft-07-semantik. Den nyare 2020-12-specen ersätter definitions med $defs och items med prefixItems/items — både gamla och nya nyckelord accepteras.
Vad betyder sökvägen i ett fel?
Ajv rapporterar instancePath i RFC 6901 JSON Pointer-notation: '/users/0/email' betyder 'email-egenskapen på första användaren'. Roten är tom sträng (renderas som $ i UI). Det gör navigering tillbaka till det felande fältet i nästlade data enkel.
Varför kompilerar inte mitt schema?
Vanliga orsaker: felaktig JSON (extra kommatecken, enkla citattecken, ociterade nycklar); ett $ref som pekar på en obefintlig definition; eller ett nyckelord i strict-mode som Ajv inte känner igen. Panelen för schema-tolkningsfel visar Ajvs exakta kompileringsfel; strict-mode är redan avstängt här så de flesta icke-standard scheman kompilerar ändå.
Varför får jag ett 'unknown keyword'- eller 'unknown format'-fel?
Standard JSON Schema-nyckelord (type, required, properties osv.) är inbyggda. Anpassade formatnamn som 'date-time', 'uri', 'email' valideras inte som standard — Ajv behandlar dem som annotationer om du inte laddar ajv-formats. Om format behöver kontrolleras, kör valideringen i ett byggsteg med ajv-formats installerat.
Stannar validatorn vid första felet?
Nej. Ajv är konfigurerad med allErrors: true, så varje misslyckande rapporteras. För djupt nästlade fel kan det bli mångordigt; om du bara vill ha det första, ge JSON+schema till din egen ajv()-anrop med allErrors: false i bygget.
Fungerar det för väldigt stora JSON-dokument?
Ja, men det rätta mönstret i kod är compile-once-validate-many. Detta verktyg omkompilerar vid varje Validera-klick, vilket är bra för dev-tids-kontroller men inte för produktions-hot-paths. Ajv-bygget här är standard ESM-bundlen; vänta dig kompileringstider i millisekunder för typiska scheman.
Skickas mitt JSON och schema någonstans?
Nej. Båda textrutorna stannar i din webbläsare; Ajv kör lokalt; vi loggar, lagrar eller telemetrerar inte innehållet. Du kan verifiera i DevTools-fliken Nätverk — det finns inget nätverksanrop när du klickar Validera.
Vad är skillnaden mot schema-fliken i JSON Formatter?
JSON Formatters schemaflik använder samma Ajv-stödda SchemaService för engångskontroller bredvid formatering, JSONPath och trädvy. Denna fristående validator ger två stora inklistringsrutor, en exempelladdare, kopiera-fel-export och en enda dedikerad URL att bokmärka eller dela — bättre när validering är din enda uppgift.