Har du noen gang bygget en nettside, kalt en API eller kikket i en package.json-fil, har du allerede møtt JSON. Det står for JavaScript Object Notation, og det er i bunn og grunn det universelle språket apper bruker for å snakke med hverandre. Ikke la "JavaScript"-delen lure deg — JSON fungerer med praktisk talt alle programmeringsspråk.
La oss bryte det ned på vanlig norsk, med mange eksempler underveis.
En kort historieleksjon
JSON ble laget av Douglas Crockford tidlig på 2000-tallet. Han ville ha noe enklere enn XML for å sende data frem og tilbake mellom nettlesere og servere. Ideen slo raskt an — JSON ble offisielt standardisert som ECMA-404 i 2013 og senere som RFC 8259 i 2017.
I dag bruker over 90% av web-API-er JSON. Det går ingen vei tilbake.
Hvordan ser JSON ut?
Her er et enkelt eksempel — et JSON-objekt som representerer en person:
Ganske lesbart, ikke sant? Det er hele poenget. La oss se på reglene som gjør dette mulig.
Syntaksreglene (de er enkle, lovet)
Datatyper: JSON gir deg seks byggesteiner å jobbe med: strenger (alltid i doble anførselstegn), tall, boolske verdier (true/false), null, objekter og arrays. Det er alt — ingen datoer, ingen funksjoner, ingen spesialtyper.
Objekter: Dette er nøkkel-verdi-parene dine, pakket inn i krøllparenteser {}. Nøkler må være strenger i doble anførselstegn. Her er et eksempel på et nestet objekt:
Arrays: Ordnede lister pakket inn i hakeparenteser []. De kan inneholde en hvilken som helst blanding av typer:
En fallgruve: JSON tillater ikke komma på slutten. Så {"name": "Sam",} vil ødelegge parseren din. Dette snubler opp mange som kommer fra JavaScript, der komma på slutten er helt greit.
Hvorfor utviklere elsker JSON
Det er noen grunner til at JSON vant krigen om dataformatene:
- Det er dødsenkelt. Sammenlign
{"name": "Jo"}med XMLsJo. Mindre skriving, mindre støy. - Alle språk støtter det. Python har
json.loads(), JavaScript harJSON.parse(), Go harencoding/json— du skjønner poenget. Sjekk MDN JSON-dokumentasjonen for JavaScript-siden. - Det er lettvektig. JSON-payloads er typisk 30-50% mindre enn tilsvarende XML. Det betyr noe når du sender millioner av API-svar om dagen.
- Det mapper naturlig til kode. Et JSON-objekt ser nesten identisk ut som en Python-ordbok, et JavaScript-objekt eller en Ruby-hash. Ingen oversettingslag nødvendig.
Hvor du finner JSON i naturen
- Web-API-er: Kall nesten hvilken som helst REST API og du får JSON tilbake. Prøv det selv — åpne nettleseren og gå til
https://api.github.com/users/octocat. Det er JSON. - Konfigurasjonsfiler:
package.jsonfor Node.js,tsconfig.jsonfor TypeScript,settings.jsonfor VS Code — JSON er overalt i utviklerverktøy. - Databaser: MongoDB lagrer data i BSON (binær JSON). PostgreSQL har native JSON-kolonnetyper. Til og med MySQL la til JSON-støtte.
- Datautveksling: Mikrotjenester snakker nesten alltid med hverandre i JSON over HTTP.
JSON vs XML — Kortversjonen
XML har fortsatt sin plass (mer om det i vår XML-artikkel), men for det meste av webutviklingsarbeid vinner JSON på lesbarhet, filstørrelse og parsehastighet. Det eneste området der XML skinner? Dokumentsentrerte data med blandet innhold, skjemaer og transformasjoner.
Validering av JSON-en din
Selv en liten feil — et manglende komma, et ekstra anførselstegn eller et komma på feil sted — vil få JSON-parsing til å feile fullstendig. Det finnes ingen "delvis parsing" med JSON; det fungerer enten eller det gjør det ikke. Derfor er verktøy som vår JSON Formatter og JSON Validator så nyttige. Lim inn JSON-en din, og du ser umiddelbart om noe er galt.
Vanlige JSON-feil (og hvordan du fikser dem)
Etter mange år med JSON, her er feilene jeg ser utviklere gjøre gang på gang:
1. Enkle anførselstegn i stedet for doble. Dette er gyldig JavaScript, men IKKE gyldig JSON:
2. Komma på slutten. JavaScript tillater dem, JSON gjør det ikke:
3. Kommentarer. JSON har ingen kommentarsyntaks. Hvis du trenger kommentarer i konfigurasjonsfiler, vurder å bruke JSONC (JSON with Comments, støttet av VS Code) eller bytt til YAML.
4. Nøkler uten anførselstegn. I JavaScript kan du skrive {name: "Sarah"}, men i JSON må hver nøkkel være en streng i anførselstegn: {"name": "Sarah"}.
5. Bruk av undefined. JavaScripts undefined finnes ikke i JSON. Bruk null i stedet.
Jobbe med JSON i forskjellige språk
En av JSONs største styrker er universell språkstøtte. Slik ser parsing og serialisering ut i populære språk:
Legg merke til hvor like API-ene er? parse/loads for å lese, stringify/dumps for å skrive. De fleste språk følger det samme mønsteret.
JSON-ytelsestips
Når du jobber med store JSON-payloads, begynner ytelse å bety noe. Her er noen praktiske tips:
- Minifiser for produksjon. Fjerning av mellomrom fra JSON kan redusere filstørrelsen med 10-30%. Vår JSON Minifier gjør dette med ett klikk.
- Bruk streaming-parsere for store filer. Hvis JSON-filen din er hundrevis av megabyte, ikke last den helt inn i minnet. Biblioteker som
JSONStream(Node.js) ellerijson(Python) parser inkrementelt. - Unngå dypt nestede strukturer. Hvert nivå av nesting legger til parseoverhead. Hvis du nester mer enn 4-5 nivåer dypt, vurder å flate ut datamodellen din.
- Vurder binære alternativer for ekstreme tilfeller. For systemer med veldig høy gjennomstrømning kan formater som MessagePack, BSON eller Protocol Buffers tilby 2-5x mindre payloads og raskere parsing. Men du mister menneskelig lesbarhet, så det er en avveining.
JSON i virkelig API-design
La oss se på hvordan ekte API-er strukturerer JSON-responsene sine. Her er et vanlig mønster for paginerte API-responser:
Og her er et vanlig feilresponsmønster:
Disse mønstrene er så vanlige at du finner dem i nesten alle godt designede REST API-er. Å følge konvensjoner som disse gjør API-et ditt lettere å forstå for andre utviklere.
JSON hurtigreferanse
Her er en jukselapp med alt du kan putte i et JSON-dokument:
| Type | Eksempel | Merknader |
| String | "hello" | Må bruke doble anførselstegn |
| Number | 42, 3.14, -1, 2.5e10 | Ingen ledende nuller, ingen hex |
| Boolean | true, false | Kun små bokstaver |
| Null | null | Kun små bokstaver |
| Object | {"key": "value"} | Nøkler må være strenger i anførselstegn |
| Array | [1, 2, 3] | Kan blande typer |
Prøv det selv
Klar til å bruke denne kunnskapen? Her er verktøyene du bør bokmerke:
- JSON Formatter — Lim inn rotete JSON og få det vakkert formatert med riktig innrykk.
- JSON Validator — Sjekk raskt om JSON-en din er syntaktisk gyldig og få klare feilmeldinger når den ikke er det.
- JSON Minifier — Fjern mellomrom fra JSON-en din for produksjonspayloads.
JSON kan virke enkelt på overflaten, men å mestre særegenhetene og beste praksisene vil spare deg for utallige timer med feilsøking. Nå gå og bygg noe flott!