UltKit

JSON-formateerder en -valideerder

Plak JSON om dit netjies te formateer, te minify of die sleutels te sorteer. As dit nie ontleed kan word nie, wys die formateerder die reël en kolom waar die ontleder vasgeval het, met 'n wyser onder die probleem, sodat u 'n ontbrekende komma in 'n antwoord van 3 000 reëls binne sekondes vind.

Uitvoer

0 karakters · 0 woorde · 0 reëls

0 karakters · 0 woorde · 0 reëls

Werk heeltemal in hierdie blaaieroortjie. Jou teks word nooit opgelaai of gestoor nie.

JSON-waardetipes

RFC 8259 laat presies hierdie waardes toe. Objekte en skikkings nes; alles anders is 'n blaar.

TipeVoorbeeldReël
Objek{"id": 7, "tags": ["a"]}Sleutels moet strings in dubbele aanhalingstekens wees; lede word met kommas geskei, sonder 'n kommas aan die einde.
Skikking[1, "two", null]Geordende lys van enige waardes, gemengde tipes toegelaat.
String"caf\u00e9 \"quoted\""Net dubbele aanhalingstekens; beheerkarakters moet ontsnap word; \u-ontsnappings gebruik vier heks-syfers.
Getal-12.5e3Net desimaal: opsionele minus, geen voorste nulle nie, opsionele breuk en eksponent. Geen NaN of Infinity nie.
true, false en nulltrueKleinletters, sonder aanhalingstekens.

Wat die ontleder verwerp

Elke invoer hieronder is deur dieselfde JSON.parse gestuur wat die formateerder gebruik toe hierdie bladsy gebou is.

InvoerProbleemJSON.parse
{"a": 1,}Komma aan die eindeVerwerp
{'a': 1}Strings in enkele aanhalingstekensVerwerp
{"a": 1 /* note */}KommentaarVerwerp
{a: 1}Sleutel sonder aanhalingstekensVerwerp
{"n": NaN}NaN is nie 'n JSON-getal nieVerwerp
{"n": 012}Voorste nulVerwerp
{"n": 0x1F}Heksadesimale getalVerwerp

Ontsnappings in JSON-strings

KarakterIn JSON geskryf
Dubbele aanhalingsteken"\""
Truglelstreep"\\"
Reëlvoer"\n"
Tab"\t"
Waenterugkeer"\r"
Beheerkarakter U+0001"\u0001"
Skuinsstreep (ontsnapping opsioneel)"/"
Nie-ASCII-letter (geen ontsnapping nodig nie)"é"

Die reëls wat 'n geldige JSON-dokument volg

JSON word deur RFC 8259 gespesifiseer (in wese identies aan ECMA-404). 'n Dokument is 'n enkele waarde: 'n objek, 'n skikking, 'n string, 'n getal, true, false of null. Objeksleutels is altyd strings in dubbele aanhalingstekens. Strings gebruik net dubbele aanhalingstekens en moet die aanhalingsteken, die truskuinsstreep en elke beheerkarakter onder U+0020 ontsnap; tabs en reëlbreuke binne 'n string word dus as \t en \n geskryf. RFC 8259 vereis ook UTF-8 vir JSON wat tussen stelsels uitgeruil word.

Getalle is desimaal: geen voorloopnulle nie, geen heksadesimale getalle nie, geen NaN of Infinity nie, en geen plusteken aan die voorkant nie. Die formaat het geen kommentaar en geen sleepkommas nie. Dié laaste twee reëls veroorsaak die meeste foute in die praktyk, omdat JavaScript-objekliterale, JSON5 en baie konfigurasielêers albei toelaat. Die verwysingstabel hieronder is opgestel deur elke algemene fout deur dieselfde ontleder te stuur wat die formatteerder gebruik.

Netjies formateer, minify, sorteer

Mooi-druk voeg reëlbreuke en inkeping by sodat die struktuur leesbaar is; twee spasies is die algemeenste styl in JavaScript-projekte, vier spasies is die gewone keuse by Python se json.dumps(indent=4), en tabs laat elke leser die wydte kies. Verklein verwyder elke onbelangrike spasie, wat API-vrag kleiner maak en 'n dokument op een reël laat pas vir logboeke of omgewingsveranderlikes.

Sorteer sleutels rangskik die lede van elke objek alfabeties, rekursief. JSON-objekte is per definisie ongeordend, so sortering verander nie die betekenis nie, maar dit maak twee dokumente uit verskillende stelsels baie makliker om te vergelyk. Let op dat ontleding getalle in JavaScript-doubles omskep: heelgetalle bo 2^53 (9 007 199 254 740 992), soos sommige databasis-ID's, verloor akkuraatheid wanneer hulle herformatteer word, so hou dié as strings.

Van JSON na ander formate

'n Geformatteerde dokument is makliker om te lees, maar soms het jy dit in 'n ander vorm nodig. 'n Skikking van objekte word 'n sigblad met JSON na CSV, en die data-omskakelaar skuif hele lêers tussen JSON, XML, YAML en CSV.

Gereelde vrae

Waarom weier die formateerder my JSON met kommentaar?
Standaard-JSON het geen kommentaarsintaksis nie; RFC 8259 laat dit doelbewus weg. Verwyder die kommentaar, of hou die lêer as JSONC of JSON5 as die program wat dit lees dié formate ondersteun.
Wat beteken "Unexpected token" in 'n JSON-fout?
Die ontleder het 'n karakter teëgekom wat nie op daardie posisie mag voorkom nie, soos 'n enkele aanhalingsteken, 'n sleepkomma voor } of 'n sleutel sonder aanhalingstekens. Die reël en kolom wat gewys word, dui na daardie karakter.
Verander die sortering van sleutels my data?
Nee. Die volgorde van objeklede het geen betekenis in JSON nie, so die gesorteerde dokument is gelykwaardig. Die volgorde van skikkings is betekenisvol en word nooit verander nie.
Waarom het 'n lang getal ná formatering verander?
JavaScript stoor getalle as 64-bis-dryfpunte, wat heelgetalle slegs tot 2^53 presies voorstel. Groter ID's word by ontleding afgerond; stuur hulle as strings om elke syfer te behou.
Kan ek 'n JSON-lêer formateer in plaas daarvan om te plak?
Maak die lêer in enige teksredigeerder oop, kies alles en plak dit hier. Baie groot lêers van tientalle megagrepe kan die oortjie stadig maak terwyl die teksarea dit vertoon.