JSON-formatter og validator
Indsæt JSON for at formatere det pænt, minify det eller sortere nøglerne. Hvis det ikke kan parses, viser formatteren den linje og kolonne, hvor parseren gav op, med en markør under problemet, så et manglende komma i et svar på 3.000 linjer kan findes på få sekunder.
0 tegn · 0 ord · 0 linjer
0 tegn · 0 ord · 0 linjer
Kører udelukkende i denne browserfane. Din tekst bliver aldrig uploadet eller gemt.
JSON-værdityper
RFC 8259 tillader netop disse værdier. Objekter og arrays kan indlejres; alt andet er blade.
| Type | Eksempel | Regel |
|---|---|---|
| Objekt | {"id": 7, "tags": ["a"]} | Nøgler skal være strenge i dobbelte anførselstegn; medlemmer adskilles med kommaer uden afsluttende komma. |
| Array | [1, "two", null] | Ordnet liste af vilkårlige værdier, blandede typer er tilladt. |
| Streng | "caf\u00e9 \"quoted\"" | Kun dobbelte anførselstegn; kontroltegn skal escapes; \u-escapes bruger fire hex-cifre. |
| Tal | -12.5e3 | Kun decimal: valgfrit minus, ingen foranstillede nuller, valgfri brøkdel og eksponent. Ingen NaN eller Infinity. |
| true, false og null | true | Små bogstaver, uden anførselstegn. |
Hvad parseren afviser
Hvert input nedenfor blev sendt til den samme JSON.parse, som formatereren bruger, da siden blev bygget.
| Input | Problem | JSON.parse |
|---|---|---|
{"a": 1,} | Afsluttende komma | Afvist |
{'a': 1} | Strenge med enkelte anførselstegn | Afvist |
{"a": 1 /* note */} | Kommentarer | Afvist |
{a: 1} | Nøgle uden anførselstegn | Afvist |
{"n": NaN} | NaN er ikke et JSON-tal | Afvist |
{"n": 012} | Foranstillet nul | Afvist |
{"n": 0x1F} | Hexadecimalt tal | Afvist |
Escapes i JSON-strenge
| Tegn | Skrevet i JSON |
|---|---|
| Dobbelt anførselstegn | "\"" |
| Omvendt skråstreg | "\\" |
| Linjeskift (line feed) | "\n" |
| Tabulator | "\t" |
| Vognretur | "\r" |
| Kontroltegn U+0001 | "\u0001" |
| Skråstreg (escape er valgfrit) | "/" |
| Ikke-ASCII-bogstav (escape er ikke nødvendigt) | "é" |
De regler et gyldigt JSON-dokument følger
JSON er specificeret i RFC 8259 (indholdsmæssigt identisk med ECMA-404). Et dokument er én enkelt værdi: et objekt, et array, en streng, et tal, true, false eller null. Objektnøgler er altid strenge i dobbelte anførselstegn. Strenge bruger kun dobbelte anførselstegn og skal escape anførselstegnet, backslash og alle kontroltegn under U+0020; tabulatorer og linjeskift i en streng skrives derfor som \t og \n. RFC 8259 kræver desuden UTF-8 for JSON, der udveksles mellem systemer.
Tal er decimale: ingen foranstillede nuller, ingen hexadecimale tal, ingen NaN eller Infinity og intet plustegn foran. Formatet har ingen kommentarer og ingen afsluttende kommaer. De to sidste regler giver de fleste fejl i praksis, fordi JavaScript-objektliteraler, JSON5 og mange konfigurationsfiler tillader begge dele. Referencetabellen nedenfor er lavet ved at give hver almindelig fejl til den samme parser, som formatteringsværktøjet bruger.
Pæn formatering, minify og sortering
Pretty-print tilføjer linjeskift og indrykning, så strukturen bliver læsbar; to mellemrum er den mest almindelige stil i JavaScript-projekter, fire mellemrum er det sædvanlige valg med Pythons json.dumps(indent=4), og med tabulatorer kan hver læser selv vælge bredde. Minificering fjerner alle overflødige mellemrum, hvilket gør API-data mindre og får et dokument til at passe på én linje i logfiler eller miljøvariabler.
Sortér nøgler ordner medlemmerne i hvert objekt alfabetisk, rekursivt. JSON-objekter er per definition uordnede, så sortering ændrer ikke betydningen, men det gør to dokumenter fra forskellige systemer langt lettere at sammenligne. Vær opmærksom på, at parsing gør tal til JavaScript-doubles: heltal over 2^53 (9.007.199.254.740.992), f.eks. nogle database-id'er, mister præcision, når de omformateres, så gem dem som strenge.
Fra JSON til andre formater
Et formateret dokument er nemmere at læse, men nogle gange har du brug for det i en anden form. Et array af objekter bliver til et regneark med JSON til CSV, og datakonverteren flytter hele filer mellem JSON, XML, YAML og CSV.
Ofte stillede spørgsmål
- Hvorfor afviser formatteren min JSON med kommentarer?
- Standard-JSON har ingen syntaks for kommentarer; RFC 8259 udelader dem med vilje. Fjern kommentarerne, eller behold filen som JSONC eller JSON5, hvis det værktøj, der læser den, understøtter de formater.
- Hvad betyder "Unexpected token" i en JSON-fejl?
- Parseren stødte på et tegn, der ikke kan stå på den position, f.eks. et enkelt anførselstegn, et afsluttende komma før } eller en nøgle uden anførselstegn. Den viste linje og kolonne peger på det tegn.
- Ændrer sortering af nøgler mine data?
- Nej. Rækkefølgen af objektets medlemmer har ingen betydning i JSON, så det sorterede dokument er ækvivalent. Rækkefølgen i arrays har betydning og ændres aldrig.
- Hvorfor ændrede et langt tal sig efter formatering?
- JavaScript gemmer tal som 64-bit floats, som kun kan repræsentere heltal præcist op til 2^53. Større id'er afrundes ved parsing; send dem som strenge for at bevare alle cifre.
- Kan jeg formatere en JSON-fil i stedet for at indsætte teksten?
- Åbn filen i en hvilken som helst teksteditor, markér alt og indsæt det her. Meget store filer på flere titals megabyte kan gøre fanen langsom, mens tekstfeltet viser dem.