Help

JSON schema validator online: fouten met pad en reden

Met deze JSON schema validator plak je een schema en de JSON-gegevens en zie je meteen of ze overeenkomen. Is dat niet zo, dan staat bij elke fout het pad naar de waarde die faalde en een duidelijke reden, bijvoorbeeld $.users[0].email. Draft-07, 2019-09 en 2020-12 worden ondersteund, en beide vakken blijven op je apparaat.


JSON validator online: zo gebruik je hem

  1. Plak je schema in het vak JSON-schema (daar staat „Plak hier je JSON-schema...”).
  2. Plak de gegevens die je wilt controleren in het vak JSON-gegevens.
  3. Lees het Resultaat. Het wordt bijgewerkt zodra je plakt, of ongeveer 300 milliseconden nadat je stopt met typen. Je hoeft op niets te drukken.
  4. Een groene Geldig met „De JSON-gegevens komen overeen met het schema.” betekent dat de gegevens slagen. Een rode „Ongeldig: 3 fouten” toont elke fout in een lijst.
  5. Pas de gegevens (of het schema) aan en het resultaat verandert terwijl je bewerkt.

Zolang beide vakken niet gevuld zijn, staat in het resultaat „Plak een schema en de JSON-gegevens om ze te controleren.” Bevat een vak tekst die geen JSON is, dan verschijnt een rood vak Ongeldige JSON met de reden en „Regel X, kolom Y”, en het resultaat zegt welk vak je moet herstellen. Wil je een rommelig document eerst opruimen? „JSON formatteren” toont dezelfde regel en kolom voor kapotte JSON.

Fouten lezen: pad en reden

Elke fout heeft twee delen: een pad en een reden. Het pad begint bij $, de wortel van je gegevens, en volgt eigenschapsnamen met punten en arrayposities tussen rechte haken, geteld vanaf 0. Voorbeeld: het schema vraagt id als geheel getal vanaf 1, email in het formaat email en tags zonder dubbele; de gegevens zijn {"id":"7","email":"ana@","tags":["a","a"]}. Het resultaat luidt „Ongeldig: 3 fouten”:

Alle fouten staan in de lijst, niet alleen de eerste, zodat je een heel document in één keer kunt herstellen. Na 100 fouten eindigt de lijst met een regel als „en nog 250 fouten niet getoond”; het aantal in de kop blijft exact. Ontbreekt een verplichte eigenschap (required), dan staat de fout bij het pad van het object dat haar zou moeten bevatten, bijvoorbeeld $.users[0]. Zeldzamere sleutelwoorden (not, contains, propertyNames, dependentRequired en if/then/else) hebben ook hun eigen duidelijke reden.

Strikte modus: additionalproperties false

Standaard staat een schema extra eigenschappen toe: gegevens met een veld nick dat het schema nergens noemt, slagen toch. Zet Strikte modus aan („Mislukt als de gegevens eigenschappen bevatten die het schema niet vermeldt.”) om typefouten en restjes te vangen. Met het schema hierboven en de gegevens {"id":1,"email":"ana@example.com","nick":"x"} is het resultaat zonder de modus „Geldig”, en met de modus „Ongeldig: 1 fout” bij $: Onverwachte eigenschap „nick”.

Achter de schakelaar voegt de tool unevaluatedProperties: false toe aan het hoofdschema en aan elk schema van een eigenschap of item dat een object beschrijft, ook via $ref. Je tekst in het vak wordt nooit gewijzigd.

JSON schema draft 7, 2019-09 en 2020-12: versies, $ref en formaten

De tool leest de regel "$schema" van je schema en controleert de gegevens met de bijbehorende regels: http://json-schema.org/draft-07/schema# wordt als draft-07 behandeld, https://json-schema.org/draft/2019-09/schema als 2019-09 en https://json-schema.org/draft/2020-12/schema als 2020-12. Zonder "$schema" geldt 2020-12, of 2019-09 bij oudere syntaxis zoals een array in items. Draft-04, draft-06 of een ander adres worden niet ondersteund, en het resultaat noemt het adres dat het schema declareert. Dat telt, omdat sleutelwoorden tussen drafts zijn veranderd: prefixItems hoort bij 2020-12 en definitions werd in 2019-09 $defs. Beide schrijfwijzen van het verwijzingspad werken: #/$defs/name en #/definitions/name.

Limieten en privacy


Veelgestelde vragen

Hoe gebruik ik een JSON validator online met een schema?

Plak het schema in het vak „JSON-schema” en de gegevens die je wilt controleren in „JSON-gegevens”. Het resultaat verschijnt direct bij het plakken, of ongeveer 300 milliseconden nadat je stopt met typen. Een groene „Geldig” betekent dat de gegevens overeenkomen; een rode „Ongeldig” toont elke fout met pad en reden. Er is geen knop om op te drukken.

Welke versies ondersteunt de JSON schema validator: draft-07, 2019-09 of 2020-12?

Alle drie. De versie komt uit de regel „$schema” van je schema. Een schema zonder „$schema” wordt als 2020-12 gecontroleerd, of als 2019-09 bij oudere syntaxis zoals een array in items. Schema’s die draft-04, draft-06 of een ander $schema-adres declareren, worden gemeld als niet ondersteund.

Wat betekent een pad zoals $.users[0].email?

Het is de plek van de waarde die faalde. $ is de wortel van je JSON-gegevens, .users is de eigenschap users, [0] is het eerste item van die array (de telling begint bij 0) en .email is de eigenschap daarbinnen. Een pad als $.users[2].address.zip leidt op dezelfde manier stap voor stap naar de waarde.

Wat betekent een JSON schema required-fout en waarom staat die bij het bovenliggende object?

De eigenschap ontbreekt, dus er is niets om naar te wijzen. De fout staat bij het pad van het object dat haar zou moeten bevatten, bijvoorbeeld $.users[0], met de reden „Verplichte eigenschap „email” ontbreekt.” Voeg de eigenschap aan dat object toe en de fout verdwijnt.

Hoe laat ik het schema extra eigenschappen weigeren (additionalproperties false)?

Zet „Strikte modus” aan. Die voegt unevaluatedProperties: false toe aan het hoofdschema en aan elk schema van een eigenschap of item dat een object beschrijft, zodat elke eigenschap die het schema niet vermeldt faalt met „Onverwachte eigenschap”. Schema’s die additionalProperties of unevaluatedProperties al zelf instellen, houden hun keuze.

Worden formaten zoals email, date-time, uri en uuid gecontroleerd?

Ja. Het sleutelwoord „format” wordt gecontroleerd, dus een adres als ana@ faalt bij een tekenreeks met „format”: „email” en toont „Moet overeenkomen met het formaat „email”.” De gangbare formaten worden gedekt, waaronder email, date, date-time, time, uri, uuid, ipv4, ipv6 en hostname.

Kan de tool een $ref naar een ander bestand of een URL volgen?

Alleen binnen hetzelfde schema, zoals #/$defs/name of #/definitions/name. Er wordt niets gedownload, dus een verwijzing als https://example.com/address.json wordt gemeld als een verwijzing die het schema niet definieert. Kopieer het verwezen schema in je $defs en laat de $ref daarheen wijzen.

Wat betekent „Het schema zelf is niet geldig”?

Het schema overtreedt de regels van JSON Schema, bijvoorbeeld met „type”: „strng” of een „minimum” dat als tekst is geschreven. Het resultaat noemt de problemen met paden die in het schema wijzen. De gegevens worden pas gecontroleerd als het schema is hersteld.

Is dit ook een JSON schema tester die mijn gegevens uploadt?

Je kunt hem als JSON schema tester voor je eigen schema’s gebruiken, en nee, er wordt niets geüpload. Schema en gegevens worden volledig in je browser gecontroleerd, er wordt niets opgeslagen en je hebt geen account nodig.

Aanbevolen

Help de tools gratis te houden. ✨

Afbeeldingen dienen ter illustratie. Als Amazon-Partner verdien ik aan in aanmerking komende aankopen.