JSON-formatering
Klistra in JSON så formateras den om, eller komprimeras till en enda rad.
Resultat
Klistra in JSON i fältet ovan.
Så fungerar det
JSON är ett textformat för strukturerad data, byggt av objekt med namngivna fält, listor, strängar, tal, sant, falskt och tomt värde.
Formateringen ändrar bara blankstegen. Datan är densamma före och efter, vilket gör att du tryggt kan formatera om en fil innan du läser den.
Komprimeringen tar bort alla onödiga blanksteg och radbrytningar, vilket brukar minska storleken med tjugo till trettio procent för indragen JSON.
Går texten inte att tolka visas felmeddelandet från webbläsarens egen tolkare, som brukar peka ut vilket tecken som var oväntat. Vanligast är kommatecken för mycket före en avslutande klammer, och citattecken av fel sort.
Kommentarer är inte tillåtna i JSON, och fältnamn måste stå inom raka citattecken. Det är den vanligaste skillnaden mot hur objekt skrivs i JavaScript.
Så formaterar verktyget
Verktyget gör två saker i följd. Först prövas texten med webbläsarens JSON.parse, men bara för att se att den är giltig. Själva omformateringen går sedan tecken för tecken genom din egen text: blanktecken utanför strängar tas bort, och radbrytningar och indrag på två eller fyra mellanslag läggs in efter klamrar, hakparenteser och kommatecken. Tomma objekt och listor skrivs ihop. Strängar kopieras orörda, med sina escape-sekvenser kvar. Komprimeringen är samma genomgång utan radbrytningar och indrag.
Talen står kvar
Att läsa in JSON i JavaScript och skriva ut den igen kan ändra talen, eftersom JavaScript har en enda taltyp med begränsad precision. Prövat med verktygets kod blir heltalet 12345678901234567890 då 12345678901234567000, talet 1.0 blir 1 och 1e400 blir null. I verktyget står alla tre kvar exakt som de skrevs. RFC 8259 räknar bara heltal upp till 2⁵³ − 1, alltså 9 007 199 254 740 991, som säkra mellan olika system, och I-JSON (RFC 7493) rekommenderar att tal som måste vara exakta och är större än så skickas som strängar.
Dubbla namn
Ett objekt med samma namn två gånger går igenom kontrollen. RFC 8259 säger bara att namnen bör vara unika, och att hur mottagaren gör med dubbletter är oförutsägbart; många tolkare behåller bara det sista värdet. Verktyget behåller båda, så dubbletten syns i resultatet. En omväg via JavaScript hade tyst tagit bort det första värdet. I-JSON förbjuder dubbletter helt.
Vanliga fel
Ett tabbtecken eller en radbrytning inne i en sträng gör texten ogiltig, eftersom RFC 8259 kräver att kontrolltecknen U+0000–U+001F skrivs med escape, t.ex. \t för tabb. Det händer lätt när text klistras in från ett kalkylark. NaN och Infinity, som finns i JavaScript men inte i JSON, avvisas också, och likaså en byteordningsmarkering (BOM) först i texten, fast RFC 8259 tillåter att tolkare bortser från den.