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

  1. Klistra in JSON-instansen som ska valideras i vänstra textrutan.
  2. 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.
  3. Klicka Validera. Om båda indata tolkas rent kompilerar Ajv schemat och kör valideringen.
  4. 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.
  5. Klicka Kopiera fel för att hämta hela rapporten som `sökväg: meddelande`-rader för delning eller lagring i en fixturfil.
  6. 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.