Hvad er JSON? En letforståelig guide med eksempler
JSON (JavaScript Object Notation) er et simpelt tekstformat til at skrive struktureret data ned – ting som en kunde, en ordre eller en liste over produkter – som navne parret med værdier. Det er let for mennesker at læse og let for programmer at producere og fortolke. Når apps og tjenester udveksler data over nettet, er JSON langt det mest almindelige format.
Hvorfor JSON betyder noget, når du bygger med AI
Du vil støde på JSON hele tiden, selvom du aldrig skriver kode:
- API'er. Når din apps skærme henter data fra backend, eller din backend kalder en betalings-, mail- eller AI-tjeneste, rejser data typisk som JSON. Se hvad en API er.
- Indstillingsfiler. Mange projektkonfigurationsfiler er JSON – fx
package.json, der lister et JavaScript-projekts afhængigheder. - Databaser. Postgres kan gemme JSON i en kolonne (typen
jsonb) til data, der ikke passer i pæne rækker og kolonner. Se hvad Postgres er. - AI-output. Når du vil have en AI-model til at returnere noget, et program kan bruge – en liste over tags, udtrukne fakturafelter – beder du typisk om JSON.
- Fejlmeddelelser og logs. Mange fejl kommer som JSON, og at læse dem er ofte den hurtigste måde at finde ud af, hvad der gik galt.
At kunne læse JSON lader dig tjekke, hvad din app faktisk modtog, opdage et manglende felt og beskrive problemer præcist over for din AI-builder.
En hverdagsanalogi
Tænk på en papirformular: Navn: ____, Telefon: ____, Nyhedsbrev: ☐ ja ☐ nej. Hver udfyldning er en etiket med en værdi ved siden af. JSON er den formular skrevet som tekst i et strengt layout, som en computer kan læse uden at gætte. Og ligesom formularer kan JSON have afsnit inden i afsnit (en adresseblok med gade, by og postnummer) og lister (flere telefonnumre).
Sådan ser JSON ud
Her er en enkelt booking i JSON:
{
"id": 5001,
"customer": "Lena Park",
"service": "Haircut",
"startsAt": "2026-10-03T14:00:00Z",
"price": 35.5,
"paid": false,
"notes": null,
"extras": ["beard trim", "hot towel"],
"contact": {
"email": "lena@example.com",
"phone": "+44 20 7946 0000"
}
}
Sådan læses det:
- Krøllede parenteser
{ }omslutter et objekt – et sæt navn/værdi-par. - Hvert par er
"navn": værdi, adskilt af kommaer. - Firkantede parenteser
[ ]omslutter et array – en ordnet liste. - Objekter og arrays kan ligge inde i hinanden, som
contactogextrasgør.
De seks slags værdier
JSON har kun seks typer værdier. Den lille liste er en stor del af grunden til, at det virker overalt.
| Type | Eksempel | Bemærkninger |
|---|---|---|
| Streng (tekst) | "Lena Park" | Altid dobbelte anførselstegn |
| Tal | 35.5, -2, 1e6 | Ingen anførselstegn; ingen valutasymboler |
| Boolesk | true, false | Små bogstaver, ingen anførselstegn |
| Null | null | „Ingen værdi“ |
| Objekt | { "city": "Leeds" } | Navngivne værdier |
| Array | [1, 2, 3] | Ordnet liste; elementerne kan være af enhver type |
Der er ingen datotype. Datoer skrives som strenge, typisk i ISO 8601-formatet vist ovenfor (2026-10-03T14:00:00Z, hvor Z betyder UTC). Hvis man bliver enige om det format, undgår man en hel kategori af tidszone-fejl.
De strenge regler (der hvor fejlene kommer fra)
JSON er mindre tilgivende, end det ser ud. Disse er alle ugyldige:
{ name: "Lena" } ← nøgle uden dobbelte anførselstegn
{ 'name': 'Lena' } ← enkelte anførselstegn
{ "a": 1, "b": 2, } ← efterfølgende komma
{ "a": 1 "b": 2 } ← manglende komma
{ "a": 1 // kommentar } ← kommentarer er ikke tilladt
De fleste „Unexpected token“-fejl, du ser, er en af disse. En JSON-validator eller formatter viser dig den præcise linje.
Et konkret eksempel: JSON gennem en app
En kunde booker en hårklipning i en frisørapp. Her dukker JSON op:
- Booking-formularen sender dette til appens backend:
{ "service": "Haircut", "startsAt": "2026-10-03T14:00:00Z", "name": "Lena Park" }
- Backend gemmer bookingen i databasen og svarer med status
201 Createdog:
{ "id": 5001, "status": "confirmed" }
- Hvis tidspunktet allerede var optaget, svarer den i stedet med status
409 Conflictog:
{ "error": "slot_taken", "message": "Tiden er lige blevet booket. Vælg venligst en anden." }
Siden læser status eller error og viser den rigtige besked. Hvis siden i stedet viste en tom skærm, ville det at åbne browserens udviklerværktøjer (fanen Network) vise dig denne JSON – ofte den hurtigste ledetråd til, hvad der gik galt.
Centrale begreber
| Begreb | Betydning |
|---|---|
| Nøgle (key) | Navnet i et navn/værdi-par, fx "email". |
| Parse | Omdan JSON-tekst til data, et program kan bruge. |
| Serialize / stringify | Omdan data til JSON-tekst, der kan sendes eller gemmes. |
| Payload | De data, der sendes i en forespørgsel eller et svar. |
| Schema | En beskrivelse af den form, data skal have – hvilke felter, hvilke typer. JSON Schema er en standard til at skrive en. |
| JSONB | Postgres' binære JSON-kolonnetype, som kan indekseres og forespørges. |
| NDJSON / JSON Lines | Ét JSON-objekt pr. linje, almindeligt til logs og streaming. |
Almindelige misforståelser
- „JSON er JavaScript.“ Det kommer fra JavaScripts syntaks, men det er uafhængigt af sprog; Python, Java, C#, Go og resten læser det alle.
- „Tal i anførselstegn er fint.“
"35"er en streng, ikke et tal. Blanding skaber fejl som"35" + "5", der bliver til"355". Penge gemmes ofte bedst som hele øre (3550) for at undgå afrundingsproblemer. - „JSON er sikkert, fordi det bare er data.“ JSON kan indeholde alt, også hemmeligheder. Læg ikke API-nøgler i JSON, der sendes til browseren.
- „Læg alt i en JSON-kolonne.“ Praktisk til fleksible ekstrafelter, men data du søger, filtrerer eller joiner på, hører typisk hjemme i rigtige kolonner.
- „AI'en returnerer altid gyldig JSON.“ Modeller kan tilføje ekstra tekst eller bryde formatet. Mange udbydere tilbyder en struktureret output-tilstand; din kode bør stadig tjekke det, der kommer tilbage.
Hvad du kan bede din AI-builder om
- „Vis mig et eksempel på den JSON, dette endpoint returnerer.“
- „Returnér fejl som JSON med en
error-kode og en menneskelæseligmessage.“ - „Gem datoer som ISO 8601-strenge i UTC, og konverter kun til lokal tid på skærmen.“
- „Gem priser som heltal i øre/cent.“
- „Valider indkommende JSON på serveren, og afvis forespørgsler med manglende eller forkert typede felter.“
- „Når AI-modellen kaldes, så bed om JSON i præcis denne form, og tjek det, før det bruges.“
JSON i Mythex
Du behøver ikke skrive JSON i hånden i Mythex – du beskriver, hvad du vil have, og agenten skriver koden, der sender og læser det. Det hjælper dog at kunne genkende det: når noget går i stykker, giver det agenten en præcis ledetråd at indsætte fejlen i chatten. Dokumentationens REST API-backend-opskrift beder om „klare JSON-fejl“ fra starten, og integrér enhver API-opskriften dækker kald til eksterne tjenester. For det større billede, se REST vs GraphQL og sådan debugger du en AI-bygget app.
Spørgsmål
Hvad er JSON i enkle termer?
JSON (JavaScript Object Notation) er et tekstformat til at skrive struktureret data ned som navne og værdier, fx "name": "Lena". Næsten alle web-API'er bruger det til at sende data frem og tilbage, og mange apps bruger det til indstillinger og gemte data.
Er JSON et programmeringssprog?
Nej. JSON er et dataformat, ikke et sprog. Det kan ikke gøre noget på egen hånd – det beskriver kun data. Selvom det kommer fra JavaScript, kan praktisk talt alle programmeringssprog læse og skrive det.
Hvad er forskellen på JSON og et JavaScript-objekt?
De ligner hinanden, men JSON er strengere. I JSON skal alle nøgler stå i dobbelte anførselstegn, strenge bruger dobbelte anførselstegn, der er ingen kommentarer, ingen efterfølgende kommaer, og værdierne er begrænset til strenge, tal, true, false, null, objekter og arrays.
Hvorfor siger min JSON, at den er ugyldig?
De typiske årsager er et komma efter det sidste element, enkelte anførselstegn i stedet for dobbelte, et manglende komma mellem elementer, en parentes der ikke er lukket, eller en kommentar. Indsæt det i en JSON-validator, så peger den på linjen.