JSON formatter og validator

Acrafto Team Utviklere
Oppdatert
Venter på inndata. Lim inn JSON ovenfor eller slipp en .json-fil.

Denne JSON formatter og validator sjekker JSON mens du skriver, du limer bare inn teksten i feltet ovenfor. Gyldige inndata formateres pent med innrykket du velger, eller minifiseres til én linje. Ugyldige inndata gir en presis feilmelding med linje og kolonne, et uthevet utdrag og, for de vanlige feilene, en reparasjon med ett klikk. Alt kjører i nettleseren din, så API-svar, konfigurasjonsfiler og eksporter forlater aldri datamaskinen din.

Hva denne JSON formatteren gjør

  • Formater JSON med 2 mellomrom, 4 mellomrom eller tabulatorer. Utdataene beholder den opprinnelige rekkefølgen på nøklene, med mindre du huker av for Sorter nøkler.
  • Minifiser JSON ved å fjerne alle mellomrom og linjeskift. Størrelsesvisningen under resultatet viser hvor mange byte du sparte.
  • Valider JSON live mot RFC 8259, den gjeldende JSON-standarden. Statuslinjen blir grønn i det øyeblikket dokumentet er korrekt.
  • Rett vanlige feil automatisk: etterfølgende komma, enkle anførselstegn, nøkler uten anførselstegn, kommentarer, True, None og NaN i Python-stil og tall som .5 eller +1.
  • Last inn filer med knappen Åpne fil eller ved å slippe en .json-fil i inndatafeltet. Deretter kan du laste ned resultatet eller sende det tilbake til inndatafeltet for en ny runde.

JSON validator: hvorfor feilmeldingen betyr mer enn den røde fargen

De fleste validatorer på nett sier bare at noe er feil. Nettleserne er ikke stort bedre: JSON.parse i Chrome melder Unexpected token } in JSON at position 148, mens Firefox sier expected property name or '}', og ingen av dem forteller deg hvilken linje du skal se på. Dette verktøyet har sin egen parser som husker hvor hvert token starter. Når den stopper, får du linje og kolonne, et utdrag av linjen med en ^-markør under tegnet som er feil, og et hint på vanlig norsk, for eksempel Sannsynligvis mangler et komma mellom to egenskaper. Knappen Gå til feilen flytter skrivemarkøren rett til den posisjonen i inndataene.

De vanligste feilene vi ser i innlimte dokumenter:

InndataProblemKorrekt JSON
{'name': 'Ada'}enkle anførselstegn{"name": "Ada"}
{name: "Ada"}nøkkel uten anførselstegn{"name": "Ada"}
[1, 2, 3,]etterfølgende komma[1, 2, 3]
{"a": 1 "b": 2}manglende komma{"a": 1, "b": 2}
{"ok": True}Python-literal{"ok": true}
{"x": 007}innledende null{"x": 7} eller {"x": "007"}
// commentkommentarikke tillatt i JSON

Knappen Fiks det for meg reparerer alle disse unntatt det manglende kommaet og den innledende nullen. Reparasjonen er bevisst forsiktig. Den gjetter aldri hvor et manglende komma hører hjemme, fordi et komma på feil sted endrer betydningen av dataene, og 007 kan være ment som tallet 7 eller som en kode. I slike tilfeller får du den nøyaktige posisjonen i stedet.

Store tall, rekkefølgen på nøklene og andre ting som ofte går i stykker

Mange formattere fungerer ved å kalle JSON.parse og deretter JSON.stringify. Den rundturen skader data uten at du merker det. En Twitter- eller Snowflake-ID som 1234567890123456789 overskrider grensen på 2^53 for tall i JavaScript og kommer tilbake som 1234567890123456800. Verdien 1.0 blir til 1, og 1e3 blir til 1000. Denne formatteren gjør aldri om tall til flyttall. Den kopierer hver literal nøyaktig slik den ble skrevet, så utdataene er en tro omformatering av inndataene, ikke en ny tolkning av dem. Det samme gjelder escape-sekvenser inne i strenger: "\u00e9" forblir "\u00e9" og blir ikke gjort om til "é".

Rekkefølgen på nøklene bevares også. JSON-spesifikasjonen sier at medlemmene i et objekt ikke har noen bestemt rekkefølge, men konfigurasjonsfiler, testdata og kodegjennomganger blir mye lettere å lese når rekkefølgen er stabil. Hvis du foretrekker en kanonisk form, for eksempel for å sammenligne to API-svar i et diff-verktøy, slår du på Sorter nøkler. Da lister begge dokumentene egenskapene sine alfabetisk på hvert nivå.

Formatere eller minifisere JSON: når bruker du hva

Pent formatert JSON er for mennesker. Bruk det når du går gjennom et API-svar, skriver en package.json, tsconfig.json eller et OpenAPI-dokument, eller når du lagrer testdata i et repository der diffen skal vise én endring per linje. To mellomrom er konvensjonen i JavaScript-verdenen, fire mellomrom er vanlig i Python- og .NET-prosjekter, og med tabulatorer kan hver leser velge sin egen bredde.

Minifisert JSON er for maskiner. Mellomrom og linjeskift utgjør typisk 20 til 40 prosent av et formatert dokument. Når du fjerner dem, blir data som sendes til nettlesere mindre, og det samme gjelder verdier som lagres i Redis eller i en databasekolonne og data-*-attributter i HTML. Gzip tetter en del av gapet, men den minifiserte versjonen komprimeres likevel til et mindre resultat. Størrelsesvisningen under resultatet viser den nøyaktige forskjellen for ditt dokument.

JSON formatter i terminalen og i editoren

For filer du behandler gang på gang, er et kommandolinjeverktøy raskere enn noen nettside. jq . file.json formaterer pent, jq -c . file.json minifiserer, og python -m json.tool file.json fungerer overalt der Python er installert. Visual Studio Code formaterer JSON med Shift+Alt+F og validerer mot et skjema når du legger til en $schema-egenskap. Denne siden er for de andre tilfellene: et svar kopiert fra nettverksfanen, en logglinje, et konfigurasjonsutdrag fra en wiki eller en rask sjekk på en maskin der du ikke kan installere noe.

Relaterte verktøy på dette nettstedet: Base64-enkoderen og dekoderen dekoder payload-delen av en JWT, som er JSON kodet i Base64url. Konvertereren for Unix-tidsstempler gjør om createdAt-tallene i de fleste API-svar til lesbare datoer, og UUID-dekoderen viser versjonen og tidsstempelet til identifikatorene i dataene dine. Flere verktøy finner du under verktøy for utviklere.

Ofte stilte spørsmål

Blir JSON-en min lastet opp til en server? Nei. Tolking, formatering og reparasjon kjører helt og holdent i nettleseren din i JavaScript. Når siden er lastet inn, kan du slå av nettverket, og verktøyet fungerer fortsatt. Ingenting blir logget eller lagret.
Hvorfor avviser validatoren kommentarer når editoren min godtar dem? Kommentarer ble fjernet fra JSON med vilje av opphavsmannen, Douglas Crockford, for å hindre at formatet ble brukt til parserdirektiver. Filer som tsconfig.json eller .vscode/settings.json er teknisk sett JSONC, et supersett av JSON som editorer støtter. Strenge parsere i API-er, databaser og de fleste programmeringsspråk avviser dem. Fiks-knappen fjerner kommentarene, så resultatet blir gyldig overalt.
Kan jeg formatere JSON Lines eller flere objekter samtidig? Et JSON-dokument inneholder nøyaktig én verdi. Hvis du limer inn flere objekter adskilt med komma eller linjeskift, stopper validatoren ved den første ekstra verdien. Pakk dem inn i hakeparenteser slik at de blir en array, og formater deretter. Fiks-knappen gjør ikke dette automatisk, fordi den ikke kan vite om inndataene var ment som ett dokument.
Hva er maksimal størrelse? Det finnes ingen fast grense. Dokumenter på noen få megabyte formateres på godt under ett sekund på en bærbar datamaskin. Syntaksuthevingen slås av over omtrent 400 kB slik at siden fortsatt reagerer raskt, men kopiering og nedlasting fungerer som vanlig.
Endrer sortering av nøkler dataene? Nei. Objekter i JSON har per definisjon ingen rekkefølge, se artikkelen om JSON på Wikipedia, så en parser leser det sorterte og det opprinnelige dokumentet som samme verdi. Arrayer sorteres aldri om, fordi rekkefølgen deres er en del av dataene.
Hvordan escaper jeg JSON for å bygge den inn i en streng? Minifiser først, og sett deretter escape-tegn foran hver omvendt skråstrek og hvert dobbelt anførselstegn. Mange språk gjør dette direkte: JSON.stringify(JSON.stringify(obj)) i JavaScript eller json.dumps(json.dumps(obj)) i Python gir en JSON-streng som inneholder JSON-teksten.

Jeg ville satt pris på om du kunne dele disse sidene med venner, bokmerk dem eller lenk til dem. Takk! 🙏