Historien bag JSON-formateringen

JSON er i dag det format, de fleste web-API'er taler, men det blev aldrig designet af et udvalg. Det blev snarere opdaget end opfundet: en lille delmængde af JavaScript, som viste sig at være lige nok til at flytte data mellem programmer.

Krøllede parenteser og indlejrede datablokke, der danner et lysende træ
Krøllede parenteser og indlejrede datablokke, der danner et lysende træ

Et opdaget format

Omkring 2001 søgte Douglas Crockford og hans kolleger hos State Software en måde, hvorpå en browser og en server kunne udveksle data uden plugins. De brugte de objekt- og array-literaler, JavaScript allerede forstod, gav idéen et navn og lagde grammatikken på json.org, berømt for at kunne stå på bagsiden af et visitkort.

Hvorfor der ikke er kommentarer

Tidligt fjernede Crockford kommentarer fra JSON, fordi folk begyndte at lægge instruktioner til parseren i dem, hvilket ville ødelægge kompatibiliteten. Hans råd var at fjerne kommentarer med en minimerer før parsning. Derfor melder en formatering en kommentar som et uventet tegn, og derfor findes formater som JSON5 og JSONC til konfigurationsfiler.

Fra webside til standard

JSON blev først beskrevet som RFC 4627 i 2006. Ecma udgav ECMA-404 i 2013, og IETF erstattede de ældre tekster med RFC 8259 i 2017, som kræver UTF-8 for JSON, der udveksles mellem systemer. Grammatikken har næsten ikke ændret sig siden json.org: objekter, arrays, strenge, tal, true, false og null.

Tal og stier

JSON sætter ingen grænse for tal, men de fleste parsere gemmer dem som 64 bit kommatal, så heltal over 9007199254740991 i stilhed kan miste præcision. Store id'er sendes derfor ofte som strenge. For at pege på en værdi foreslog Stefan Goessner JSONPath i 2007 med XPath som forbillede, og det blev standarden RFC 9535 i 2024. Stierne, som denne formatering kopierer, følger den notation med dollartegn og kantede parenteser.

Ofte stillede spørgsmål

Hvem opfandt JSON?

Douglas Crockford specificerede og udbredte JSON i begyndelsen af 2000'erne, men han siger selv, at han opdagede det, fordi det er en delmængde af JavaScript, der allerede fandtes.

Hvorfor tillader JSON ikke afsluttende kommaer eller enkelte anførselstegn?

Grammatikken blev holdt så lille som muligt, så alle sprog kan parse den ens. Hver ekstra bekvemmelighed ville være endnu en chance for, at to parsere er uenige.

Er JSON det samme som et JavaScript-objekt?

Nej. JSON er tekst. Nøgler skal have dobbelte anførselstegn, og funktioner, undefined, kommentarer, NaN og Infinity er ikke tilladt, selvom JavaScript accepterer dem i kode.

Er du klar til at prøve?

Åbn PictorX i din browser - ingen installation, ingen kreditkort kræves for at starte.

Åbn JSON-formateringen