JSON-formaterare och validerare
Klistra in JSON för att formatera den snyggt, minifiera den eller sortera nycklarna. Om den inte går att tolka visar formateraren raden och kolumnen där tolken gav upp, med en markör under problemet, så att ett saknat kommatecken i ett svar på 3 000 rader hittas på några sekunder.
0 tecken · 0 ord · 0 rader
0 tecken · 0 ord · 0 rader
Körs helt i den här webbläsarfliken. Din text laddas aldrig upp eller sparas.
JSON-värdetyper
RFC 8259 tillåter exakt dessa värden. Objekt och arrayer kan nästlas; allt annat är löv.
| Typ | Exempel | Regel |
|---|---|---|
| Objekt | {"id": 7, "tags": ["a"]} | Nycklar måste vara strängar inom dubbla citattecken; medlemmar avgränsas med kommatecken utan avslutande komma. |
| Array | [1, "two", null] | Ordnad lista med valfria värden, blandade typer tillåtna. |
| Sträng | "caf\u00e9 \"quoted\"" | Endast dubbla citattecken; kontrolltecken måste escapas; \u-escapes använder fyra hexsiffror. |
| Tal | -12.5e3 | Endast decimalt: valfritt minustecken, inga inledande nollor, valfri decimaldel och exponent. Inget NaN eller Infinity. |
| true, false och null | true | Gemener, utan citattecken. |
Vad parsern avvisar
Varje indata nedan skickades till samma JSON.parse som formateraren använder när den här sidan byggdes.
| Indata | Problem | JSON.parse |
|---|---|---|
{"a": 1,} | Avslutande komma | Avvisad |
{'a': 1} | Strängar med enkla citattecken | Avvisad |
{"a": 1 /* note */} | Kommentarer | Avvisad |
{a: 1} | Nyckel utan citattecken | Avvisad |
{"n": NaN} | NaN är inte ett JSON-tal | Avvisad |
{"n": 012} | Inledande nolla | Avvisad |
{"n": 0x1F} | Hexadecimalt tal | Avvisad |
Escapes i JSON-strängar
| Tecken | Skrivs i JSON |
|---|---|
| Dubbelt citattecken | "\"" |
| Omvänt snedstreck | "\\" |
| Radmatning | "\n" |
| Tabb | "\t" |
| Vagnretur | "\r" |
| Kontrolltecken U+0001 | "\u0001" |
| Snedstreck (escape valfritt) | "/" |
| Icke-ASCII-bokstav (ingen escape behövs) | "é" |
Reglerna som ett giltigt JSON-dokument följer
JSON specificeras av RFC 8259 (i praktiken identisk med ECMA-404). Ett dokument består av ett enda värde: ett objekt, en array, en sträng, ett tal, true, false eller null. Objektnycklar är alltid strängar inom dubbla citattecken. Strängar använder bara dubbla citattecken och måste escapa citattecknet, backslash och alla styrtecken under U+0020. Tabbar och radbrytningar inuti en sträng skrivs därför som \t och \n. RFC 8259 kräver dessutom UTF-8 för JSON som utbyts mellan system.
Tal skrivs decimalt: inga inledande nollor, inget hexadecimalt, inga NaN eller Infinity och inget plustecken framför. Formatet saknar kommentarer och avslutande kommatecken. De två sista reglerna orsakar de flesta fel i praktiken, eftersom JavaScript-objektliteraler, JSON5 och många konfigurationsfiler tillåter båda. Referenstabellen nedan togs fram genom att mata varje vanligt misstag till samma parser som formateraren använder.
Formatera, minifiera, sortera
Snygg formatering lägger till radbrytningar och indrag så att strukturen blir läsbar. Två blanksteg är vanligast i JavaScript-projekt, fyra blanksteg är det vanliga valet med Pythons json.dumps(indent=4), och med tabbar kan varje läsare välja bredd. Minifiering tar bort alla onödiga blanksteg, vilket gör API-data mindre och låter ett dokument rymmas på en rad i loggar eller miljövariabler.
Sortera nycklar ordnar medlemmarna i varje objekt alfabetiskt, rekursivt. JSON-objekt är per definition oordnade, så sorteringen ändrar inte betydelsen, men den gör det mycket enklare att jämföra två dokument från olika system. Tänk på att parsning gör om tal till JavaScript-doubles: heltal över 2^53 (9 007 199 254 740 992), till exempel vissa databas-ID:n, tappar precision när de formateras om, så behåll dem som strängar.
Från JSON till andra format
Ett formaterat dokument är lättare att läsa, men ibland behöver du det i en annan form. En array av objekt blir ett kalkylblad med JSON till CSV, och dataomvandlaren flyttar hela filer mellan JSON, XML, YAML och CSV.
Vanliga frågor
- Varför avvisar formateraren min JSON med kommentarer?
- Standard-JSON har ingen syntax för kommentarer. RFC 8259 utelämnar dem med flit. Ta bort kommentarerna, eller behåll filen som JSONC eller JSON5 om verktyget som läser den stöder de formaten.
- Vad betyder ”Unexpected token” i ett JSON-fel?
- Parsern stötte på ett tecken som inte får finnas på den platsen, till exempel ett enkelt citattecken, ett avslutande kommatecken före } eller en nyckel utan citattecken. Raden och kolumnen som visas pekar på det tecknet.
- Ändrar sortering av nycklar mina data?
- Nej. Ordningen på objektets medlemmar har ingen betydelse i JSON, så det sorterade dokumentet är likvärdigt. Ordningen i arrayer är betydelsefull och ändras aldrig.
- Varför ändrades ett långt tal efter formateringen?
- JavaScript lagrar tal som 64-bitars flyttal, som bara kan representera heltal exakt upp till 2^53. Större ID:n avrundas vid parsning. Skicka dem som strängar för att behålla varje siffra.
- Kan jag formatera en JSON-fil i stället för att klistra in?
- Öppna filen i valfri textredigerare, markera allt och klistra in det här. Mycket stora filer på tiotals megabyte kan göra fliken långsam medan textrutan återger dem.