JSON-validator & -verfraaier

Valideer en verfraai uw JSON-inhoud met onze JSON-validator en -verfraaiingstool voor schone en leesbare JSON-gegevens.

5 van 2 beoordelingen
JSON-validator & -verfraaier

De JSON-validator & -verfraaier is een gratis hulpmiddel dat controleert of JSON syntactisch geldig is en geldige inhoud opmaakt, zodat de structuur makkelijker te lezen is.

Wat doen JSON-validatie en -verfraaiing?

JSON-validatie controleert of de invoer de grammaticaregels van JSON volgt. Verfraaiing geeft geldige objecten en arrays weer met consistente spaties en inspringing. Dat is handig bij het opsporen van fouten in API-responses, het controleren van configuraties vóór implementatie en het lezen van compacte gegevens van derden.

JSON heeft strengere syntaxisregels dan een JavaScript-objectliteral. Namen van eigenschappen moeten tussen dubbele aanhalingstekens staan, tekenreeksen mogen geen enkele aanhalingstekens gebruiken en objecten en arrays mogen niet eindigen met een komma. Ook opmerkingen, undefined, NaN en Infinity vallen buiten de JSON-specificatie.

Deze tool gebruikt PHP's functie json_decode op de server. Je invoer wordt via HTTPS naar de server verzonden en niet opgeslagen. De gegevens verlaten dus wel je apparaat. Verwijder wachtwoorden, toegangstokens en persoonsgegevens als de regels van je organisatie niet toestaan dat deze naar een externe server worden gestuurd.

Hoe valideer en verfraai ik JSON?

Plak de inhoud in het veld JSON en voer de tool uit. Gebruik één volledige JSON-waarde voor een bruikbaar resultaat, niet slechts een deel van een object dat je uit een logregel hebt gekopieerd.

  1. Kopieer de onbewerkte response, het configuratieblok of een andere JSON-waarde zonder omliggende labels uit de console.
  2. Plak deze in het JSON-veld en behoud alle aanhalingstekens en escapetekens.
  3. Voer de validatie uit en bekijk het opgemaakte resultaat of de gemelde fout.
  4. Als de validatie mislukt, corrigeer dan het eerste zichtbare syntaxisprobleem en probeer het opnieuw. Door één ontbrekend aanhalingsteken kunnen meerdere tekens verderop verkeerd worden geïnterpreteerd.
De tool JSON-validator & -verfraaier op digily.link, met het invoerformulier

De vier toegestane witruimtetekens tussen JSON-tokens zijn de spatie (U+0020), tab (U+0009), line feed (U+000A) en carriage return (U+000D). Deze zijn niet betekenisvol en kunnen dus worden toegevoegd of verwijderd zonder de gegevens te veranderen. Witruimte binnen een tekenreeks tussen aanhalingstekens is wel onderdeel van de gegevens en moet ongewijzigd blijven. Leestekens binnen tekenreeksen blijven eveneens behouden, al hebben aanhalingstekens, backslashes en besturingstekens de juiste escapereeks nodig.

Hoe lees ik het validatieresultaat?

Een geslaagd resultaat betekent dat PHP de invoer als JSON kon decoderen. Bij een fout kon de parser de invoer niet interpreteren als één volledige, geldige JSON-waarde. Verfraaiing maakt vervolgens de geneste structuur en begrenzing van geldige objecten en arrays zichtbaar.

Veelvoorkomende oorzaken van fouten zijn:

  • een afsluitende komma vóór } of ];
  • een naam van een eigenschap zonder aanhalingstekens, zoals {name: "Ada"};
  • tekenreeksen tussen enkele aanhalingstekens;
  • een ontbrekende komma tussen eigenschappen of array-elementen;
  • een dubbel aanhalingsteken of backslash binnen een tekenreeks zonder escape;
  • een onvolledig object, een onvolledige array of tekenreeks;
  • ongeldige UTF-8-invoer of een onbewerkt besturingsteken binnen een tekenreeks;
  • een geheel getal met overbodige voorloopnullen, zoals 01 of -01, of waarden die niet bij JSON horen, zoals NaN.

Een leeg veld is geen geldige JSON. Een losse waarde zoals 42, true, null of "hello" is daarentegen wel geldige JSON, ook al is het geen object of array. Zeer diep geneste inhoud kan bovendien de nestinglimiet van de decoder overschrijden.

Syntaxisvalidatie bevestigt niet dat de gegevens voldoen aan een API-contract. Een document kan geldige JSON zijn, maar toch een tekenreeks bevatten waar een toepassing een getal verwacht, een verplichte eigenschap missen of een niet-toegestane datumnotatie gebruiken. Gebruik JSON Schema of controles op toepassingsniveau om zulke vereisten te toetsen.

Voorbeeldresultaat van de tool JSON-validator & -verfraaier

Uitgewerkte JSON-voorbeelden

Geldige compacte invoer:

{"name":"Ada","active":true,"roles":["admin","editor"]}

In het verfraaide resultaat staan de eigenschappen en array-elementen op afzonderlijke, ingesprongen niveaus. De waarden blijven respectievelijk een tekenreeks, een booleaanse waarde en een array. De opmaak verandert alleen de presentatie, niet de onderliggende gegevenstypen.

Ongeldige invoer met een afsluitende komma:

{"name":"Ada","active":true,}

Deze invoer mislukt omdat JSON geen komma toestaat na de laatste eigenschap. Verwijder die komma om het object geldig te maken.

Tekst met accenten en niet-Latijnse tekens kan rechtstreeks in JSON-tekenreeksen staan als de invoer geldige UTF-8 is. {"city":"Zürich","greeting":"こんにちは"} is bijvoorbeeld geldig. JSON-escapenotatie zoals \u00fc is een andere geldige weergave van bepaalde Unicode-tekens. Voor tekens buiten het Basic Multilingual Plane zijn echter surrogaatparen nodig.

Wanneer heeft het weinig zin om JSON te verfraaien?

Verfraaiing is niet nodig als alleen een machine de JSON leest en niemand de inhoud hoeft te controleren of in versiebeheer hoeft te beoordelen. Extra inspringing en regeleinden vergroten het aantal verzonden bytes. Daarom worden productieresponses doorgaans in compacte vorm verstuurd.

Het heeft ook weinig nut om JSON te minificeren die al compact is. Herhaald minificeren kan vaste namen van eigenschappen of tekenreekswaarden niet korter maken. Als je die waarden wijzigt, verander je de gegevens. Voor implementeerbare JavaScript in plaats van JSON-gegevens is de JS minificator geschikter.

Verfraaiing is vooral nuttig wanneer je tijdens foutopsporing, codereviews en controles vóór implementatie de structuur of waarden van JSON bekijkt. Het maakt verkeerd geneste onderdelen zichtbaar, vereenvoudigt het doornemen van grote arrays en levert overzichtelijkere verschillen op wanneer configuratie in Git wordt vastgelegd. De tool herstelt ongeldige JSON niet automatisch en bepaalt ook niet wat er met een dubbelzinnig fragment werd bedoeld.

Veelgestelde vragen

Mag JSON opmerkingen bevatten?

Nee. Standaard-JSON heeft geen syntaxis voor opmerkingen. Zowel // comment als /* comment */ laat de validatie daarom mislukken. Als je opmerkingen nodig hebt in een configuratiebestand, gebruik dan een formaat waarin ze zijn gedefinieerd of verwijder ze voordat je de inhoud door een strikte JSON-parser laat verwerken.

Worden dubbele namen van eigenschappen afgekeurd?

Niet altijd. Volgens de JSON-specificatie horen namen van leden binnen een object uniek te zijn, maar parsers behandelen dubbele namen niet betrouwbaar als een syntaxisfout. Bij het decoderen met PHP blijft doorgaans de laatste waarde behouden. Detecteer dubbele namen daarom vóór de validatie als elke afzonderlijke vermelding behouden moet blijven.

Kan ik een JSON Lines-bestand valideren?

Niet als één JSON-document. JSON Lines, ook wel NDJSON genoemd, bevat op elke regel een afzonderlijke JSON-waarde. Een gewone JSON-parser verwacht daarentegen één waarde op het hoogste niveau. Valideer elke regel afzonderlijk of zet de records om in één JSON-array.

Maakt de volgorde van eigenschappen in een object uit?

Toepassingen horen niet afhankelijk te zijn van de volgorde van eigenschappen in een JSON-object. Arrays hebben een vaste volgorde, maar objecten zijn verzamelingen van benoemde leden. Een andere parser of serialiser kan die leden in een andere volgorde uitvoeren. Als de volgorde betekenis heeft, plaats de waarden dan in een array.

Waarom wordt een JSON-bestand afgekeurd terwijl het er correct uitziet?

Een onzichtbare bytevolgordemarkering, ongeldige UTF-8 of een besturingsteken zonder escape kan ogenschijnlijk correcte tekst ongeldig maken. Bij het kopiëren uit een terminal kunnen ook voorvoegsels meekomen, zoals statuslabels of tijdstempels. Controleer de onbewerkte bytes of open het bestand in een editor die coderingen en besturingstekens kan weergeven.

Laatste controles

Vergelijk vóór de implementatie van gecorrigeerde JSON niet alleen de zichtbare waarden, maar ook de gegevenstypen. Controleer of escapereeksen niet zijn gewijzigd en voer de toepassing die de JSON gebruikt of de bijbehorende schemavalidatie uit. Bewaar bij het onderzoeken van gegevens van derden een ongewijzigde kopie van de oorspronkelijke response, zodat opmaak de oorzaak van de fout niet verhult.

Populaire tools