JSON-validator

Plak een willekeurig JSON-document en zie of het netjes parset volgens RFC 8259. Ongeldige invoer komt terug met het exacte probleem, afsluitende komma na het laatste array-item, key zonder aanhalingstekens, niet-afgesloten string, enkele aanhalingstekens waar JSON dubbele eist, foute escape-sequences, plus de regel en kolom waar de parser het opgaf. Handig bij het debuggen van een API-respons, een configbestand, een package.json die een teamgenoot met de hand heeft bewerkt of de output van een code-generator.

Zo werkt JSON-validatie

  1. 1

    Plak je JSON

    Zet er een payload, een configbestand of een API-respons in. Witruimte is prima; tabs en comments niet (pure JSON heeft geen comments).

  2. 2

    Parse met een strikte RFC 8259-parser

    De validator weigert alles wat de spec verbiedt: afsluitende komma's, keys zonder aanhalingstekens, enkele aanhalingstekens, `undefined`, hexgetallen.

  3. 3

    Lees de fout

    Als het misgaat, krijg je de melding van de parser plus een geschatte locatie: genoeg om direct naar het teken te navigeren.

  4. 4

    Repareer en hervalideer

    Los het probleem op, plak opnieuw en bevestig dat het document geldig is voordat je commit of verstuurt.

Wat strikte JSON toestaat, en wat niet

Er zweven veel “bijna-JSON”-formaten rond (JSON5, JSONC, HJSON, YAML-achtige hybrides). De JSON-spec zelf is klein en strikt; deze validator vertelt je of je document een strikte parser overleeft, en dat is wat de meeste downstream-systemen daadwerkelijk draaien.

Regels waar de meeste mensen op vastlopen

Regel Geldig Ongeldig
Keys moeten dubbele-quote strings zijn {"a": 1} {a: 1}
Strings gebruiken alleen dubbele aanhalingstekens "hello" 'hello'
Geen afsluitende komma’s [1, 2, 3] [1, 2, 3,]
Geen comments (geen) // comment of /* */
Getallen: geen voorloop-+, geen .5 0.5 +1, .5
Alleen gereserveerde literals true, false, null undefined, NaN
UTF-8-codering Unicode-strings Ongeldige bytereeksen

Veelvoorkomende fouten en wat ze betekenen

  • “Unexpected token }, je hebt een afsluitende komma vóór de sluitende accolade.
  • “Expected property name”, de key staat niet tussen aanhalingstekens, of je bent de aanhalingstekens rond de openingskey vergeten.
  • “Unexpected end of input”, een openende { of [ is niet afgesloten; tel de accolades.
  • “Bad control character”, een tab, newline of ander control-byte binnen een string-literal. Escape ze als \t, \n, enzovoort.
  • “Duplicate key”, eigenlijk geen JSON-spec-fout (de spec zegt dat keys uniek SHOULD zijn), maar veel validators waarschuwen ervoor. De validator markeert het als een notice, niet als een harde fout.

Als je laksere formaten nodig hebt

  • JSON5 staat afsluitende komma’s, comments en enkele aanhalingstekens toe. Gebruik een JSON5-parser als dat je doelformaat is.
  • JSONC (JSON met comments) gebruiken de VS Code-instellingen. Verwijder comments vóór het strikte parsen.
  • YAML is een ander formaat; ga er niet vanuit dat het “gewoon ingesprongen JSON” is.

Tips

  • Valideer voor het committen. Een typfout in een package.json of een CI-config breekt de hele build totdat iemand het opmerkt.
  • Pretty-print na het valideren zodat review-diffs leesbaar zijn. Een JSON-bestand op één regel is geldig maar ellendig om te reviewen.
  • Voor grote payloads, valideer streamend (jq op de command line, bijvoorbeeld). In-browser parsen worstelt voorbij een paar MB.

Veelgestelde vragen

Deze tool controleert alleen de syntactische geldigheid, is het well-formed JSON? Voor structurele regels (verplichte velden, enum-waarden, stringlengtes) gebruik je een JSON Schema-validator. De twee stappen vullen elkaar aan: het heeft geen zin om Schema-validatie te draaien op een document dat niet eens geldige JSON is.

Omdat standaard-JSON geen comments heeft. // en /* */ zijn een gezond-verstand-uitbreiding (JSONC, JSON5), maar pure JSON weigert ze. Verwijder comments voordat je naar een strikte consumer stuurt, of stap over op JSON5 in je hele stack.

Ongeldig in strikte JSON. De spec staat alleen eindige getallen toe. Serialiseer ze als strings ("NaN", "Infinity") of als null, afhankelijk van hoe je consumer met ontbrekende data omgaat.

Nee, de validatie draait in je browser, dus de payload die je plakt verlaat de pagina nooit. Veilig voor gevoelige configbestanden en API-responsen met inloggegevens.

Gerelateerde tools

Tool beschikbaar in andere talen