JSON er nettets mest udbredte udvekslingsformat: svar fra API'er, konfigurationsfiler, dataeksporter. Det kan læses af mennesker, men er også meget strengt, og et enkelt glemt eller overflødigt komma er nok til at gøre det ulæseligt for et program. Denne guide forklarer dets regler og hvordan du stiller en diagnose på en fejl og gør dataene læsbare uden at beskadige dem.
De regler, du skal kende
Et JSON-dokument indeholder objekter ({"nøgle": værdi}), arrays ([1, 2, 3]), strenge, tal, true, false og null. Intet andet. Disse regler forklarer næsten enhver fejl:
- Nøgler og strenge bruger dobbelte citationstegn. Enkelte citationstegn ('a') er ikke gyldige.
- Intet komma efter det sidste element i et objekt eller et array.
- Ingen kommentarer. Hverken // eller /* */ findes i JSON.
- Ingen særlige værdier som NaN, Infinity eller undefined.
- Nøgler skal stå i citationstegn, i modsætning til JavaScript-objekter.
Formatér og valider trin for trin
- Indsæt JSON'en i JSON-formatering, eller slip en fil (højst 25 millioner tegn). Den indrykkes straks med 2 mellemrum, 4 mellemrum eller en tabulator, og nøgler kan sorteres alfabetisk på alle niveauer.
- Gennemse resultatet som farvet kode eller et sammenklappeligt træ; ved et stort dokument åbner træet kun de nyttige niveauer og viser lange lister i bidder på 100.
- Ved en fejl skal du læse meddelelsen: linje, kolonne, udsnit med en markør og sandsynlig årsag (overflødigt komma, enkelte citationstegn, nøgle uden citationstegn, kommentar, NaN).
- Ret fejlen, og se, at meddelelsen forsvinder: formateringen kommer straks.
Hvorfor store tal er en fælde
JavaScript fremstiller alle tal som flydende tal med dobbelt præcision: ud over 9.007.199.254.740.991 (2⁵³ − 1) fremstilles heltal ikke længere nøjagtigt. Identifikatoren 12345678901234567890, der læses og derefter skrives om af et JavaScript-program, bliver til 12345678901234567000. De fleste værktøjer tager den omvej uden at sige det. Vores kopierer tal, som du skrev dem: en identifikator på 20 cifre, 92.50 eller 1E5 ændres ikke. Rummer dine data lange identifikatorer, er det bedre at overføre dem som strenge.
Almindelige fejl
- At kopiere et JavaScript-objekt (nøgler uden citationstegn, enkelte citationstegn) i den tro, at det er JSON.
- At efterlade et komma efter det sidste element, en vane fra andre sprog.
- At indsætte JSON med kommentarer fra en konfigurationsfil (JSONC) i et værktøj, der kræver streng JSON.
- At sende identifikatorer på mere end 15 cifre gennem et værktøj, der afrunder dem.
Ærlige begrænsninger
- Højst 25 millioner tegn: ud over det skal du bruge et kommandolinjeværktøj.
- Dublerede nøgler markeres og bevares, men deres betydning varierer mellem læsere: undgå dem.
- Formateringen ændrer ikke dataene: den retter ikke en fejl for dig, den peger kun på den.
Ofte stillede spørgsmål
Hvorfor afvises min JSON, når den virker i JavaScript?
Fordi et JavaScript-objekt accepterer nøgler uden citationstegn, enkelte citationstegn og afsluttende kommaer, som JSON forbyder.
Sendes mine data et sted hen?
Nej. Formatering og validering kører i din browser.
Kan jeg lægge kommentarer i JSON?
Nej. Til en konfiguration med kommentarer kan du bruge YAML eller et afledt format som JSONC, som strenge JSON-værktøjer afviser.
Hvilken indrykning skal jeg vælge?
2 mellemrum er den mest udbredte konvention til nettet; 4 mellemrum eller en tabulator er også almindelige. Det er et spørgsmål om teamets konvention; dataenes betydning ændres ikke.
Ændrer sortering af nøgler noget?
Ikke for nogen praktisk anvendelse: nøglernes rækkefølge i et JSON-objekt har ingen betydning. Sortering hjælper med at sammenligne to filer.