Spring til indholdet
Quaestio

JSON-formatering

Indsæt JSON, så formateres den om eller komprimeres til én eneste linje.

Resultat

Indsæt JSON i feltet ovenfor.
Indlejr

Indlejr værktøjet på dit website

Kopiér koden, og indsæt den, hvor værktøjet skal vises, f.eks. i et blogindlæg eller på en skoleside. Det er gratis, boksen har ingen annoncer, og værktøjet regner i den besøgendes browser.

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.

Kilder

Sådan kontrolleres værktøjerne