UltKit

JSON formatter & validator

Plak JSON om het overzichtelijk op te maken, te minificeren of de sleutels te sorteren. Kan de JSON niet worden ingelezen, dan toont de formatter de regel en kolom waar de parser vastliep, met een aanwijzer onder het probleem. Zo vindt u een ontbrekende komma in een respons van 3.000 regels binnen enkele seconden.

Uitvoer

0 tekens · 0 woorden · 0 regels

0 tekens · 0 woorden · 0 regels

Werkt volledig in dit browsertabblad. Uw tekst wordt nooit geüpload of opgeslagen.

JSON-waardetypen

RFC 8259 staat precies deze waarden toe. Objecten en arrays nesten; al het andere is een eindwaarde.

TypeVoorbeeldRegel
Object{"id": 7, "tags": ["a"]}Sleutels moeten strings tussen dubbele aanhalingstekens zijn; leden worden door komma's gescheiden, zonder komma aan het eind.
Array[1, "two", null]Geordende lijst met willekeurige waarden, gemengde typen toegestaan.
String"caf\u00e9 \"quoted\""Alleen dubbele aanhalingstekens; stuurtekens moeten worden geëscaped; \u-escapes gebruiken vier hexcijfers.
Getal-12.5e3Alleen decimaal: optioneel min, geen voorloopnullen, optioneel breuk en exponent. Geen NaN of Infinity.
true, false en nulltrueKleine letters, zonder aanhalingstekens.

Wat de parser afwijst

Elke invoer hieronder is bij het bouwen van deze pagina doorgegeven aan dezelfde JSON.parse die de formatter gebruikt.

InvoerProbleemJSON.parse
{"a": 1,}Komma aan het eindAfgewezen
{'a': 1}Strings met enkele aanhalingstekensAfgewezen
{"a": 1 /* note */}OpmerkingenAfgewezen
{a: 1}Sleutel zonder aanhalingstekensAfgewezen
{"n": NaN}NaN is geen JSON-getalAfgewezen
{"n": 012}VoorloopnulAfgewezen
{"n": 0x1F}Hexadecimaal getalAfgewezen

Escapes in JSON-strings

TekenGeschreven in JSON
Dubbel aanhalingsteken"\""
Backslash"\\"
Regelvoeding"\n"
Tab"\t"
Carriage return"\r"
Stuurteken U+0001"\u0001"
Slash (escape optioneel)"/"
Niet-ASCII-letter (geen escape nodig)"é"

De regels waaraan een geldig JSON-document voldoet

JSON is vastgelegd in RFC 8259 (inhoudelijk identiek aan ECMA-404). Een document bestaat uit één waarde: een object, een array, een string, een getal, true, false of null. Sleutels van een object zijn altijd strings tussen dubbele aanhalingstekens. Strings gebruiken uitsluitend dubbele aanhalingstekens en moeten het aanhalingsteken, de backslash en elk stuurteken onder U+0020 escapen; tabs en regeleinden binnen een string schrijft u dus als \t en \n. RFC 8259 eist bovendien UTF-8 voor JSON die tussen systemen wordt uitgewisseld.

Getallen zijn decimaal: geen voorloopnullen, geen hexadecimale notatie, geen NaN of Infinity en geen plusteken ervoor. Het formaat kent geen opmerkingen en geen afsluitende komma's. Juist die laatste twee regels veroorzaken de meeste fouten in de praktijk, want JavaScript-objectliteralen, JSON5 en veel configuratiebestanden staan beide toe. De referentietabel hieronder is gemaakt door elke veelgemaakte fout door dezelfde parser te halen die de formatter gebruikt.

Opmaken, minificeren, sorteren

Pretty-printing voegt regeleinden en inspringing toe zodat de structuur leesbaar wordt; twee spaties is de gangbaarste stijl in JavaScript-projecten, vier spaties is de gebruikelijke keuze bij json.dumps(indent=4) van Python, en met tabs kan elke lezer zelf de breedte kiezen. Minificeren verwijdert alle overbodige spaties, waardoor API-berichten kleiner worden en een document op één regel past voor logs of omgevingsvariabelen.

Sleutels sorteren zet de leden van elk object alfabetisch, recursief. JSON-objecten zijn per definitie ongeordend, dus sorteren verandert de betekenis niet, maar het maakt het veel makkelijker om twee documenten uit verschillende systemen te vergelijken. Let op: bij het parsen worden getallen JavaScript-doubles. Gehele getallen boven 2^53 (9.007.199.254.740.992), zoals sommige database-ID's, verliezen bij opnieuw formatteren hun precisie; bewaar die dus als strings.

Van JSON naar andere formaten

Een opgemaakt document leest makkelijker, maar soms hebt u het in een andere vorm nodig. Een array van objecten wordt een spreadsheet met JSON naar CSV, en met de dataconverter zet u hele bestanden om tussen JSON, XML, YAML en CSV.

Veelgestelde vragen

Waarom weigert de formatter mijn JSON met commentaar?
Standaard-JSON kent geen syntaxis voor opmerkingen; RFC 8259 laat die bewust weg. Verwijder de opmerkingen, of bewaar het bestand als JSONC of JSON5 als het programma dat het leest die formaten ondersteunt.
Wat betekent "Unexpected token" in een JSON-foutmelding?
De parser kwam een teken tegen dat op die plek niet mag voorkomen, zoals een enkel aanhalingsteken, een afsluitende komma vóór } of een sleutel zonder aanhalingstekens. De getoonde regel en kolom wijzen naar dat teken.
Verandert het sorteren van sleutels mijn gegevens?
Nee. De volgorde van objectleden heeft in JSON geen betekenis, dus het gesorteerde document is gelijkwaardig. De volgorde in arrays is wél betekenisvol en wordt nooit gewijzigd.
Waarom is een lang getal na het opmaken veranderd?
JavaScript slaat getallen op als 64-bits floats, die gehele getallen slechts tot 2^53 exact weergeven. Grotere ID's worden bij het parsen afgerond; verstuur ze als strings om elk cijfer te behouden.
Kan ik een JSON-bestand opmaken in plaats van plakken?
Open het bestand in een willekeurige teksteditor, selecteer alles en plak het hier. Zeer grote bestanden van tientallen megabytes kunnen het tabblad traag maken terwijl het tekstvak ze weergeeft.