JSON-formatering
Indsæt JSON, så formateres den om eller komprimeres til én eneste linje.
Resultat
Indsæt JSON i feltet ovenfor.
Sådan virker det
JSON er et tekstformat til strukturerede data, bygget af objekter med navngivne felter, lister, strenge, tal, sand, falsk og tom.
Formateringen ændrer kun blanktegnene. Dataene er de samme før og efter, og du kan derfor trygt formatere en fil om, før du læser den.
Komprimeringen fjerner alle unødvendige mellemrum og linjeskift, hvilket normalt reducerer størrelsen med tyve til tredive procent for indrykket JSON.
Kan teksten ikke fortolkes, vises fejlmeddelelsen fra browserens egen fortolker, som plejer at pege på, hvilket tegn der var uventet. Mest almindeligt er et komma for meget før en afsluttende klamme og anførselstegn af forkert type.
Kommentarer er ikke tilladt i JSON, og feltnavne skal stå i lige dobbelte anførselstegn. Det er den mest almindelige forskel fra måden, objekter skrives på i JavaScript.
Sådan formaterer værktøjet
Værktøjet gør to ting i træk. Først prøves teksten med browserens JSON.parse, men kun for at se, at den er gyldig. Selve omformateringen går derefter tegn for tegn gennem din egen tekst: blanktegn uden for strenge fjernes, og linjeskift og indrykning på to eller fire mellemrum sættes ind efter klammer, kantede parenteser og kommaer. Tomme objekter og lister skrives sammen. Strenge kopieres uændret, med deres escape-sekvenser. Komprimeringen er samme gennemgang uden linjeskift og indrykning.
Tallene står uændret
At læse JSON ind i JavaScript og skrive den ud igen kan ændre tallene, fordi JavaScript har én enkelt taltype med begrænset præcision. Prøvet med værktøjets kode bliver heltallet 12345678901234567890 så til 12345678901234567000, tallet 1.0 bliver 1, og 1e400 bliver null. I værktøjet står alle tre præcis, som de blev skrevet. RFC 8259 regner kun heltal op til 2⁵³ − 1, altså 9.007.199.254.740.991, som sikre mellem forskellige systemer, og I-JSON (RFC 7493) anbefaler, at tal, der skal være nøjagtige og er større end det, sendes som strenge.
Dobbelte navne
Et objekt med samme navn to gange slipper igennem kontrollen. RFC 8259 siger kun, at navnene bør være unikke, og at det er uforudsigeligt, hvad modtageren gør med dubletter; mange fortolkere beholder kun den sidste værdi. Værktøjet beholder begge, så dubletten kan ses i resultatet. En omvej gennem JavaScript ville i stilhed have fjernet den første værdi. I-JSON forbyder dubletter helt.
Typiske fejl
Et tabulatortegn eller et linjeskift inde i en streng gør teksten ugyldig, fordi RFC 8259 kræver, at kontroltegnene U+0000–U+001F skrives med escape, for eksempel \t for tabulator. Det sker let, når tekst kopieres fra et regneark. NaN og Infinity, som findes i JavaScript, men ikke i JSON, afvises også, og det samme gør et byterækkefølgemærke (BOM) først i teksten, selv om RFC 8259 tillader fortolkere at se bort fra det.