JSON formatter og validator
Indsæt JSON i feltet ovenfor, og denne JSON formatter og validator tjekker det, mens du skriver. Gyldigt input bliver pænt formateret med den indrykning, du vælger, eller minificeret til én linje. Ugyldigt input giver en præcis fejlmeddelelse med linje og kolonne, et fremhævet uddrag og, ved de almindelige fejl, en rettelse med ét klik. Alt kører i din browser, så API-svar, konfigurationsfiler og eksporter forlader aldrig din computer.
Hvad denne JSON formatter kan
- Formatér JSON med 2 mellemrum, 4 mellemrum eller tabulatorer. Outputtet bevarer nøglernes oprindelige rækkefølge, medmindre du sætter flueben ved Sortér nøgler.
- Minificér JSON ved at fjerne alle mellemrum og linjeskift. Størrelsesvisningen under resultatet viser, hvor mange bytes du har sparet.
- Validér JSON løbende efter RFC 8259, den gældende JSON-standard. Statuslinjen bliver grøn, så snart dokumentet er korrekt.
- Ret almindelige fejl automatisk: overskydende kommaer, enkelte anførselstegn, nøgler uden anførselstegn, kommentarer,
True,NoneogNaNi Python-stil samt tal som.5eller+1. - Indlæs filer med knappen Åbn fil eller ved at trække en
.json-fil ind i inputfeltet. Download derefter resultatet, eller send det tilbage til inputfeltet for endnu en omgang.
JSON validator: hvorfor fejlmeddelelsen betyder mere end den røde farve
De fleste online validatorer siger kun, at noget er galt. Browserne er ikke meget bedre: JSON.parse i Chrome melder Unexpected token } in JSON at position 148, mens Firefox skriver expected property name or '}', og ingen af dem fortæller dig, hvilken linje du skal kigge på. Dette værktøj har sin egen parser, der husker, hvor hvert token begynder. Når den stopper, får du linje og kolonne, et uddrag af linjen med en lille pil (^) under det tegn, der skaber problemet, og et tip i almindeligt sprog som Der mangler sandsynligvis et komma mellem to egenskaber. Knappen Gå til fejlen flytter markøren direkte til den position i inputfeltet.
De hyppigste fejl, vi ser i indsatte dokumenter:
| Input | Problem | Korrekt JSON |
|---|---|---|
{'name': 'Ada'} | enkelte anførselstegn | {"name": "Ada"} |
{name: "Ada"} | nøgle uden anførselstegn | {"name": "Ada"} |
[1, 2, 3,] | overskydende komma | [1, 2, 3] |
{"a": 1 "b": 2} | manglende komma | {"a": 1, "b": 2} |
{"ok": True} | Python-literal | {"ok": true} |
{"x": 007} | foranstillet nul | {"x": 7} eller {"x": "007"} |
// comment | kommentar | ikke tilladt i JSON |
Knappen Ret det for mig retter alle disse fejl undtagen det manglende komma og det foranstillede nul. Rettelsen er bevidst forsigtig: den gætter aldrig på, hvor et manglende komma hører hjemme, fordi et komma det forkerte sted ændrer betydningen af dataene, og 007 kan være ment som tallet 7 eller som en kode. I de tilfælde får du i stedet den nøjagtige position.
Store tal, nøglernes rækkefølge og andet, der plejer at gå i stykker
Mange formattere fungerer ved at kalde JSON.parse og derefter JSON.stringify. Den rundtur skader data uden varsel. Et Twitter- eller Snowflake-ID som 1234567890123456789 overskrider grænsen på 2^53 for tal i JavaScript og kommer tilbage som 1234567890123456800. Værdien 1.0 bliver til 1, og 1e3 bliver til 1000. Denne formatter konverterer aldrig tal til flydende komma. Den kopierer hver literal præcis, som den blev skrevet, så outputtet er en tro omformatering af inputtet og ikke en ny fortolkning af det. Det samme gælder escape-sekvenser i strenge: "\u00e9" forbliver "\u00e9" og bliver ikke til "é".
Nøglernes rækkefølge bevares også. Ifølge JSON-specifikationen har et objekts medlemmer ingen fast rækkefølge, men konfigurationsfiler, testdata og kodegennemgange er meget lettere at læse, når rækkefølgen er stabil. Foretrækker du en kanonisk form, for eksempel for at sammenligne to API-svar i et diff-værktøj, så slå Sortér nøgler til. Så viser begge dokumenter deres egenskaber alfabetisk på alle niveauer.
Formatér JSON eller minificér JSON: hvornår bruger man hvad
Pænt formateret JSON er til mennesker. Brug det, når du gennemgår et API-svar, skriver en package.json, en tsconfig.json eller et OpenAPI-dokument, eller når du gemmer testdata i et repository, hvor en diff skal vise én ændring pr. linje. To mellemrum er konventionen i JavaScript-verdenen, fire mellemrum er almindeligt i Python- og .NET-projekter, og med tabulatorer kan hver læser selv vælge bredden.
Minificeret JSON er til maskiner. Mellemrum og linjeskift udgør typisk 20 til 40 procent af et formateret dokument. Når de fjernes, bliver data sendt til browsere mindre, og det samme gælder værdier gemt i Redis eller i en databasekolonne og data-*-attributter indlejret i HTML. Gzip lukker en del af forskellen, men den minificerede version komprimeres stadig til et mindre resultat. Størrelsesvisningen under resultatet viser den præcise forskel for dit dokument.
JSON i terminalen og i editorer
Til filer, du behandler igen og igen, er et kommandolinjeværktøj hurtigere end nogen hjemmeside. jq . file.json formaterer pænt, jq -c . file.json minificerer, og python -m json.tool file.json virker overalt, hvor Python er installeret. Visual Studio Code formaterer JSON med Shift+Alt+F og validerer det mod et skema, når du tilføjer en $schema-egenskab. Denne side er til alle de andre situationer: et svar kopieret fra netværksfanen, en loglinje, et konfigurationsuddrag fra en wiki eller et hurtigt tjek på en maskine, hvor du ikke kan installere noget.
Relaterede værktøjer på siden: med Base64 encoder og dekoder afkoder du payload-delen af et JWT, som er JSON kodet i Base64url. Unix timestamp konverteren gør createdAt-tallene fra de fleste API-svar til læsbare datoer, og UUID dekoderen viser version og tidsstempel for identifikatorerne i dine data. Flere værktøjer finder du under værktøjer til udviklere.
Ofte stillede spørgsmål
Bliver min JSON uploadet til en server?
Nej. Parsing, formatering og rettelse foregår udelukkende i din browser i JavaScript. Når siden er indlæst, kan du slå netværket fra, og værktøjet virker stadig. Intet bliver logget eller gemt.Hvorfor afviser validatoren kommentarer, når min editor accepterer dem?
Kommentarer blev bevidst fjernet fra JSON af formatets ophavsmand, Douglas Crockford, for at forhindre, at formatet blev brugt til parser-direktiver. Filer somtsconfig.json eller .vscode/settings.json er teknisk set JSONC, en udvidelse af JSON, som editorer understøtter. Strikse parsere i API'er, databaser og de fleste programmeringssprog afviser dem. Rettefunktionen fjerner kommentarerne, så resultatet er gyldigt overalt.
Kan jeg formatere JSON Lines eller flere objekter på én gang?
Et JSON-dokument indeholder præcis én værdi. Hvis du indsætter flere objekter adskilt af kommaer eller linjeskift, stopper validatoren ved den første ekstra værdi. Sæt dem i kantede parenteser, så de bliver til et array, og formatér derefter. Rettefunktionen gør det ikke automatisk, fordi den ikke kan vide, om inputtet var ment som ét dokument.Hvad er den maksimale størrelse?
Der er ingen fast grænse. Dokumenter på nogle få megabyte formateres på langt under et sekund på en bærbar computer. Over cirka 400 kB slås syntaksfremhævning fra, så siden forbliver responsiv, men kopiering og download virker stadig.Ændrer sortering af nøgler dataene?
Nej. Objekter i JSON har per definition ingen rækkefølge, se artiklen om JSON på Wikipedia, så en parser læser det sorterede og det oprindelige dokument som den samme værdi. Arrays bliver aldrig sorteret om, fordi deres rækkefølge er en del af dataene.Hvordan escaper jeg JSON, så det kan indlejres i en streng?
Minificér først, og escape derefter hver backslash og hvert dobbelt anførselstegn. Mange sprog kan gøre det direkte:JSON.stringify(JSON.stringify(obj)) i JavaScript eller json.dumps(json.dumps(obj)) i Python giver en JSON-streng, der indeholder JSON-teksten.