JSON-formaterer og validator
Lim inn JSON for å formatere den pent, minifisere den eller sortere nøklene. Hvis den ikke kan tolkes, viser formatereren linjen og kolonnen der parseren ga opp, med en peker under problemet, slik at et manglende komma i et svar på 3 000 linjer er funnet på sekunder.
0 tegn · 0 ord · 0 linjer
0 tegn · 0 ord · 0 linjer
Kjører helt i denne nettleserfanen. Teksten din lastes aldri opp eller lagres.
JSON-verdityper
RFC 8259 tillater nøyaktig disse verdiene. Objekter og matriser kan nestes; alt annet er løvnoder.
| Type | Eksempel | Regel |
|---|---|---|
| Objekt | {"id": 7, "tags": ["a"]} | Nøkler må være strenger i doble anførselstegn; medlemmer skilles med komma, uten komma til slutt. |
| Matrise | [1, "two", null] | Ordnet liste med vilkårlige verdier, blandede typer er tillatt. |
| Streng | "caf\u00e9 \"quoted\"" | Bare doble anførselstegn; kontrolltegn må escapes; \u-escapes bruker fire heksadesimale sifre. |
| Tall | -12.5e3 | Bare desimaltall: valgfritt minus, ingen innledende nuller, valgfri brøkdel og eksponent. Ingen NaN eller Infinity. |
| true, false og null | true | Små bokstaver, uten anførselstegn. |
Det parseren avviser
Hver inndata nedenfor ble sendt til samme JSON.parse som formatereren bruker da denne siden ble bygget.
| Inndata | Problem | JSON.parse |
|---|---|---|
{"a": 1,} | Komma til slutt | Avvist |
{'a': 1} | Strenger med enkle anførselstegn | Avvist |
{"a": 1 /* note */} | Kommentarer | Avvist |
{a: 1} | Nøkkel uten anførselstegn | Avvist |
{"n": NaN} | NaN er ikke et JSON-tall | Avvist |
{"n": 012} | Innledende null | Avvist |
{"n": 0x1F} | Heksadesimalt tall | Avvist |
Escapes i JSON-strenger
| Tegn | Skrevet i JSON |
|---|---|
| Dobbelt anførselstegn | "\"" |
| Omvendt skråstrek | "\\" |
| Linjeskift (line feed) | "\n" |
| Tabulator | "\t" |
| Vognretur | "\r" |
| Kontrolltegn U+0001 | "\u0001" |
| Skråstrek (escape er valgfritt) | "/" |
| Bokstav utenfor ASCII (trenger ikke escape) | "é" |
Reglene et gyldig JSON-dokument følger
JSON er spesifisert i RFC 8259 (innholdsmessig identisk med ECMA-404). Et dokument er én enkelt verdi: et objekt, en matrise, en streng, et tall, true, false eller null. Nøkler i objekter er alltid strenger i doble anførselstegn. Strenger bruker bare doble anførselstegn og må escape anførselstegnet, omvendt skråstrek og alle kontrolltegn under U+0020. Tabulatorer og linjeskift inne i en streng skrives derfor som \t og \n. RFC 8259 krever også UTF-8 for JSON som utveksles mellom systemer.
Tall er desimale: ingen innledende nuller, ingen heksadesimale tall, ingen NaN eller Infinity, og ikke noe plusstegn foran. Formatet har ingen kommentarer og ingen avsluttende komma. De to siste reglene gir flest feil i praksis, fordi JavaScript-objektliteraler, JSON5 og mange konfigurasjonsfiler tillater begge deler. Referansetabellen nedenfor er laget ved å mate hver vanlige feil inn i den samme parseren som formatereren bruker.
Pen formatering, minifisering, sortering
Pent formatert JSON får linjeskift og innrykk slik at strukturen blir lesbar. To mellomrom er vanligst i JavaScript-prosjekter, fire mellomrom er det vanlige valget med Pythons json.dumps(indent=4), og tabulatorer lar hver leser velge bredde. Minifisering fjerner alle overflødige mellomrom, noe som gjør API-nyttelaster mindre og lar et dokument ligge på én linje i logger eller miljøvariabler.
Sorter nøkler setter medlemmene i hvert objekt i alfabetisk rekkefølge, rekursivt. JSON-objekter er per definisjon uordnede, så sortering endrer ikke betydningen, men gjør det mye enklere å sammenligne to dokumenter fra ulike systemer. Vær oppmerksom på at parsing gjør tall om til JavaScript-doubler: heltall over 2^53 (9 007 199 254 740 992), for eksempel enkelte database-ID-er, mister presisjon når de formateres på nytt, så behold dem som strenger.
Fra JSON til andre formater
Et formatert dokument er lettere å lese, men noen ganger trenger du det i en annen form. En matrise av objekter blir et regneark med JSON til CSV, og datakonverteren flytter hele filer mellom JSON, XML, YAML og CSV.
Ofte stilte spørsmål
- Hvorfor avviser formatereren JSON med kommentarer?
- Standard JSON har ingen syntaks for kommentarer; RFC 8259 utelater dem med vilje. Fjern kommentarene, eller behold filen som JSONC eller JSON5 hvis verktøyet som leser den støtter disse formatene.
- Hva betyr «Unexpected token» i en JSON-feilmelding?
- Parseren støtte på et tegn som ikke kan stå på den plassen, for eksempel et enkelt anførselstegn, et avsluttende komma før } eller en nøkkel uten anførselstegn. Linjen og kolonnen som vises peker på det tegnet.
- Endrer sortering av nøkler dataene mine?
- Nei. Rekkefølgen på medlemmer i et objekt har ingen betydning i JSON, så det sorterte dokumentet er likeverdig. Rekkefølgen i matriser har betydning og endres aldri.
- Hvorfor endret et langt tall seg etter formatering?
- JavaScript lagrer tall som 64-bits flyttall, som bare kan representere heltall nøyaktig opp til 2^53. Større ID-er avrundes ved parsing. Send dem som strenger for å beholde alle sifrene.
- Kan jeg formatere en JSON-fil i stedet for å lime inn?
- Åpne filen i et vilkårlig tekstredigeringsprogram, marker alt og lim det inn her. Svært store filer på flere titalls megabyte kan gjøre fanen treg mens tekstfeltet viser dem.