JSON er nettets mest utbredte utvekslingsformat: svar fra API-er, konfigurasjonsfiler, dataeksporter. Det er lesbart for mennesker, men også svært strengt, og ett eneste glemt eller overflødig komma er nok til å gjøre det uleselig for et program. Denne veiledningen forklarer reglene, hvordan du finner en feil og hvordan du går fra ett format til et annet uten å skade dataene.
Reglene du bør kunne
Et JSON-dokument inneholder objekter ({"nøkkel": verdi}), lister ([1, 2, 3]), strenger, tall, true, false og null. Ingenting annet. Disse reglene forklarer nesten alle feil:
- Nøkler og strenger bruker doble anførselstegn. Enkle anførselstegn ('a') er ikke gyldige.
- Ikke noe komma etter det siste elementet i et objekt eller en liste.
- Ingen kommentarer. Verken // eller /* */ finnes i JSON.
- Ingen spesialverdier som NaN, Infinity eller undefined.
- Nøkler må stå i anførselstegn, i motsetning til JavaScript-objekter.
Formatere og validere trinn for trinn
- Lim inn JSON-en i JSON-formaterer eller slipp en fil (25 millioner tegn på det meste). Den rykkes inn med en gang, med 2 mellomrom, 4 mellomrom eller en tabulator, og nøkler kan sorteres alfabetisk på alle nivåer.
- Bla i resultatet som farget kode eller et sammenleggbart tre; for et stort dokument åpner treet bare de nyttige nivåene og viser lange lister i grupper på 100.
- Ved feil leser du meldingen: linje, kolonne, utdrag med en markør og sannsynlig årsak (ekstra komma, enkle anførselstegn, nøkkel uten anførselstegn, kommentar, NaN).
Hvorfor store tall er en felle
JavaScript representerer alle tall som flyttall med dobbel presisjon: utover 9 007 199 254 740 991 (2⁵³ − 1) representeres heltall ikke lenger eksakt. Identifikatoren 12345678901234567890, lest og skrevet om av et JavaScript-program, blir 12345678901234567000. De fleste verktøy tar den omveien uten å si fra. Våre kopierer tall slik du skrev dem: en identifikator på 20 sifre, 92.50 eller 1E5 endres ikke. Hvis dataene dine inneholder lange identifikatorer, er det bedre å overføre dem som strenger.
Vanlige feil
- Å kopiere et JavaScript-objekt (nøkler uten anførselstegn, enkle anførselstegn) i den tro at det er JSON.
- Å la et komma stå etter det siste elementet, en vane fra andre språk.
- Å lime inn JSON med kommentarer fra en konfigurasjonsfil (JSONC) i et verktøy som krever streng JSON.
- Å konvertere identifikatorer på mer enn 15 sifre via et verktøy som avrunder dem.
Ærlige begrensninger
- 25 millioner tegn på det meste: utover det bør du bruke et kommandolinjeverktøy.
- Dupliserte nøkler markeres og beholdes, men betydningen varierer mellom lesere: unngå dem.
- En CSV er et flatt format: å konvertere dypt nestet JSON gir dårligere lesbarhet.
Vanlige spørsmål
Hvorfor avvises JSON-en min når den fungerer i JavaScript?
Fordi et JavaScript-objekt godtar nøkler uten anførselstegn, enkle anførselstegn og etterfølgende komma, som JSON forbyr.
Sendes dataene mine noe sted?
Nei. Formatering, validering og konvertering skjer i nettleseren din.
Hvordan hindrer jeg at Excel kjører en skjult formel i en CSV?
Konvertereren vår setter en apostrof foran all tekst som begynner med =, +, - eller @. Ekte tall røres ikke.
Kan jeg sette kommentarer i JSON?
Nei. For en konfigurasjon med kommentarer bruker du YAML eller et avledet format som JSONC, som strenge JSON-verktøy avviser.
Hvilket innrykk bør jeg velge?
2 mellomrom er den mest utbredte konvensjonen for nettet; 4 mellomrom eller en tabulator er også vanlig. Det er et spørsmål om teamets konvensjon; betydningen av dataene endres ikke.