JSON formatter & validator

Acrafto Team Ontwikkelaars
Bijgewerkt
Wacht op invoer. Plak hierboven JSON of sleep een .json-bestand hierheen.

Plak JSON in het veld hierboven en deze JSON formatter en validator controleert de invoer terwijl u typt. Geldige invoer wordt netjes opgemaakt met de inspringing die u kiest, of geminificeerd tot één regel. Bij ongeldige invoer krijgt u een precieze foutmelding met regel en kolom, een gemarkeerd fragment en voor de gebruikelijke fouten een herstel met één klik. Alles draait in uw browser, dus API-responses, configuratiebestanden en exports verlaten uw computer nooit.

Wat deze JSON formatter en validator doet

  • JSON opmaken (beautify) met 2 spaties, 4 spaties of tabs. De uitvoer behoudt de oorspronkelijke volgorde van de sleutels, tenzij u Sleutels sorteren aanvinkt.
  • JSON minificeren door elke spatie en elk regeleinde te verwijderen. De grootte onder het resultaat laat zien hoeveel bytes u bespaart.
  • JSON valideren terwijl u typt, volgens RFC 8259, de actuele JSON-standaard. De statusregel wordt groen zodra het document correct is.
  • Veelgemaakte fouten automatisch herstellen: overbodige komma’s, enkele aanhalingstekens, sleutels zonder aanhalingstekens, commentaar, True, None en NaN in Python-stijl, getallen zoals .5 of +1.
  • Bestanden laden met de knop Bestand openen of door een .json-bestand op de invoer te slepen. Daarna downloadt u het resultaat of stuurt u het terug naar de invoer voor nog een ronde.

Waarom de foutmelding van een JSON validator belangrijker is dan de rode kleur

De meeste online validators melden alleen dat er iets mis is. Browsers doen het nauwelijks beter: JSON.parse in Chrome meldt Unexpected token } in JSON at position 148, Firefox zegt expected property name or '}', en geen van beide vertelt u op welke regel u moet kijken. Deze tool heeft een eigen parser die onthoudt waar elk token begint. Zodra die stopt, krijgt u de regel en kolom, een fragment van die regel met een dakje (^) onder het foute teken en een hint in gewone taal, zoals Er ontbreekt waarschijnlijk een komma tussen twee eigenschappen. De knop Naar de fout zet de cursor direct op die positie in de invoer.

De fouten die we het vaakst in geplakte documenten zien:

InvoerProbleemCorrecte JSON
{'name': 'Ada'}enkele aanhalingstekens{"name": "Ada"}
{name: "Ada"}sleutel zonder aanhalingstekens{"name": "Ada"}
[1, 2, 3,]overbodige komma[1, 2, 3]
{"a": 1 "b": 2}ontbrekende komma{"a": 1, "b": 2}
{"ok": True}Python-literal{"ok": true}
{"x": 007}voorloopnul{"x": 7} of {"x": "007"}
// commentcommentaarniet toegestaan in JSON

De knop Herstel het voor mij herstelt al deze fouten, behalve de ontbrekende komma en de voorloopnul. Het herstel is bewust voorzichtig: het gokt nooit waar een ontbrekende komma hoort, want een komma op de verkeerde plek verandert de betekenis van de gegevens, en 007 kan bedoeld zijn als het getal 7 of als een code. In die gevallen krijgt u in plaats daarvan de exacte positie.

Grote getallen, volgorde van sleutels en andere dingen die vaak misgaan

Veel formatters roepen eerst JSON.parse en daarna JSON.stringify aan. Die rondgang beschadigt de gegevens zonder dat u het merkt. Een Twitter- of Snowflake-ID zoals 1234567890123456789 overschrijdt de grens van 2^53 voor getallen in JavaScript en komt terug als 1234567890123456800. De waarde 1.0 wordt 1, en 1e3 wordt 1000. Deze formatter zet getallen nooit om naar drijvende komma. Hij kopieert elke literal precies zoals die geschreven is, dus de uitvoer is een getrouwe herformattering van de invoer en geen herinterpretatie ervan. Hetzelfde geldt voor escape-reeksen in strings: "\u00e9" blijft "\u00e9" en wordt niet omgezet in "é".

Ook de volgorde van de sleutels blijft behouden. Volgens de JSON-specificatie zijn de leden van een object ongeordend, maar configuratiebestanden, testfixtures en code reviews lezen veel prettiger als de volgorde stabiel is. Wilt u liever een canonieke vorm, bijvoorbeeld om twee API-responses in een diff-tool te vergelijken, schakel dan Sleutels sorteren in. Beide documenten tonen hun eigenschappen dan alfabetisch op elk nestingniveau.

JSON formatteren of minificeren: wanneer gebruikt u wat?

Opgemaakte JSON is bedoeld voor mensen. Gebruik het wanneer u een API-response doorleest, een package.json, tsconfig.json of OpenAPI-document schrijft, of fixtures opslaat in een repository waar elke diff één wijziging per regel moet tonen. Twee spaties is de gewoonte in de JavaScript-wereld, vier spaties is gangbaar in Python- en .NET-projecten, en met tabs kiest elke lezer zijn eigen breedte.

Geminificeerde JSON (minify) is bedoeld voor machines. Witruimte maakt doorgaans 20 tot 40 procent van een opgemaakt document uit. Zonder die witruimte worden payloads naar browsers kleiner, net als waarden in Redis of een databasekolom en data-*-attributen in HTML. Compressie met gzip maakt een deel van dat verschil goed, maar de geminificeerde versie wordt na compressie nog altijd kleiner. De grootte onder het resultaat toont het exacte verschil voor uw document.

Werken met JSON in de terminal en in editors

Voor bestanden die u regelmatig verwerkt, is een tool op de opdrachtregel sneller dan welke website ook. jq . file.json maakt JSON netjes op, jq -c . file.json minificeert, en python -m json.tool file.json werkt overal waar Python is geïnstalleerd. Visual Studio Code formatteert JSON met Shift+Alt+F en valideert het tegen een schema als u een $schema-eigenschap toevoegt. Deze pagina is voor de andere gevallen: een response gekopieerd uit het netwerktabblad, een logregel, een configuratiefragment van een wiki of een snelle controle op een computer waarop u niets kunt installeren.

Verwante tools op deze site: de Base64 encoder en decoder decodeert het payloaddeel van een JWT, en dat is JSON gecodeerd in Base64url. De converter voor UNIX tijdstempels zet de createdAt-getallen uit de meeste API-responses om in leesbare datums, en de UUID decoder toont de versie en tijdstempel van de ID’s in uw gegevens. Meer hulpmiddelen vindt u onder tools voor ontwikkelaars.

Veelgestelde vragen

Wordt mijn JSON naar een server geüpload? Nee. Parsen, formatteren en herstellen gebeuren volledig in uw browser, in JavaScript. Zodra de pagina geladen is, kunt u het netwerk uitschakelen en blijft de tool werken. Er wordt niets gelogd of opgeslagen.
Waarom weigert de validator commentaar terwijl mijn editor het accepteert? Commentaar is bewust uit JSON gehaald door de bedenker, Douglas Crockford, om te voorkomen dat het formaat gebruikt zou worden voor parserinstructies. Bestanden zoals tsconfig.json of .vscode/settings.json zijn technisch gezien JSONC, een uitbreiding die editors ondersteunen. Strikte parsers in API's, databases en de meeste programmeertalen weigeren ze. De herstelknop verwijdert commentaar, zodat het resultaat overal geldig is.
Kan ik JSON Lines of meerdere objecten tegelijk formatteren? Een JSON-document bevat precies één waarde. Als u meerdere objecten plakt, gescheiden door komma's of regeleinden, stopt de validator bij de eerste extra waarde. Zet ze tussen vierkante haken om er een array van te maken en formatteer daarna. De herstelknop doet dit niet automatisch, omdat hij niet kan weten of de invoer als één document bedoeld was.
Wat is de maximale grootte? Er is geen vaste limiet. Documenten van een paar megabyte worden op een laptop ruim binnen een seconde opgemaakt. Boven ongeveer 400 kB wordt de syntaxiskleuring uitgeschakeld zodat de pagina vlot blijft reageren, maar kopiëren en downloaden werken nog steeds.
Verandert het sorteren van sleutels de gegevens? Nee. Objecten in JSON zijn per definitie ongeordend, zie het artikel over JSON op Wikipedia, dus een parser leest het gesorteerde en het oorspronkelijke document als dezelfde waarde. Arrays worden nooit herschikt, omdat hun volgorde deel uitmaakt van de gegevens.
Hoe escape ik JSON om het in een string op te nemen? Minificeer eerst en escape daarna elke backslash en elk dubbel aanhalingsteken. Veel talen bieden dit direct aan: JSON.stringify(JSON.stringify(obj)) in JavaScript of json.dumps(json.dumps(obj)) in Python levert een JSON-string op die de JSON-tekst bevat.

Ik zou het waarderen als je deze pagina's zou delen met vrienden, als bladwijzer opslaat of ernaar linkt. Bedankt! 🙏