Vad är JSON? En lättförståelig guide med exempel
JSON (JavaScript Object Notation) är ett enkelt textformat för att skriva ner strukturerad data — saker som en kund, en beställning eller en lista över produkter — som namn kopplade till värden. Det är lätt för människor att läsa och lätt för program att skapa och tolka. När appar och tjänster utbyter data över webben är JSON det klart vanligaste formatet.
Varför JSON spelar roll när du bygger med AI
Du kommer att stöta på JSON hela tiden, även om du aldrig skriver kod:
- API:er. När din apps skärmar hämtar data från sin backend, eller när din backend anropar en betal-, e-post- eller AI-tjänst, färdas datan vanligtvis som JSON. Se vad ett API är.
- Inställningsfiler. Många projektkonfigurationsfiler är JSON — till exempel
package.json, som listar ett JavaScript-projekts beroenden. - Databaser. Postgres kan lagra JSON i en kolumn (typen
jsonb) för data som inte passar in i snygga rader och kolumner. Se vad Postgres är. - AI-svar. När du vill att en AI-modell ska returnera något ett program kan använda — en lista med taggar, extraherade fakturafält — ber du vanligtvis om JSON.
- Felmeddelanden och loggar. Många fel kommer som JSON, och att läsa dem är ofta det snabbaste sättet att ta reda på vad som gick fel.
Att kunna läsa JSON gör att du kan kontrollera vad din app faktiskt fick, upptäcka ett saknat fält och beskriva problem exakt för din AI-byggare.
En vardagsliknelse
Tänk på ett pappersformulär: Namn: ____, Telefon: ____, Nyhetsbrev: ☐ ja ☐ nej. Varje ifyllning är en etikett med ett värde bredvid. JSON är det formuläret skrivet som text, i en strikt layout som en dator kan läsa utan att gissa. Och precis som formulär kan JSON ha avsnitt inom avsnitt (ett adressblock med gata, stad och postnummer) och listor (flera telefonnummer).
Så här ser JSON ut
Här är en enda bokning 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å här läser du det:
- Klammerparenteser
{ }omsluter ett objekt — en uppsättning namn/värde-par. - Varje par är
"namn": värde, separerade med kommatecken. - Hakparenteser
[ ]omsluter en array — en ordnad lista. - Objekt och arrayer kan ligga i varandra, som
contactochextrasgör.
De sex typerna av värden
JSON har bara sex typer av värden. Den lilla listan är en stor del av varför det fungerar överallt.
| Typ | Exempel | Anmärkning |
|---|---|---|
| Sträng (text) | "Lena Park" | Alltid dubbla citattecken |
| Tal | 35.5, -2, 1e6 | Inga citattecken; inga valutasymboler |
| Boolean | true, false | Gemener, inga citattecken |
| Null | null | ”Inget värde” |
| Objekt | { "city": "Leeds" } | Namngivna värden |
| Array | [1, 2, 3] | Ordnad lista; poster kan vara av vilken typ som helst |
Det finns ingen datumtyp. Datum skrivs som strängar, oftast i ISO 8601-formatet som visas ovan (2026-10-03T14:00:00Z, där Z betyder UTC). Att komma överens om det formatet undviker en hel kategori tidszonsfel.
De strikta reglerna (där felen kommer ifrån)
JSON är mindre förlåtande än det verkar. Dessa är alla ogiltiga:
{ name: "Lena" } ← nyckel utan dubbla citattecken
{ 'name': 'Lena' } ← enkla citattecken
{ "a": 1, "b": 2, } ← avslutande kommatecken
{ "a": 1 "b": 2 } ← saknat kommatecken
{ "a": 1 // kommentar } ← kommentarer är inte tillåtna
De flesta ”Unexpected token”-fel du ser är ett av dessa. En JSON-validerare eller formaterare visar exakt rad.
Ett praktiskt exempel: JSON genom en app
En kund bokar en hårklippning i en salongsapp. Här dyker JSON upp:
- Bokningsformuläret skickar detta till appens backend:
{ "service": "Haircut", "startsAt": "2026-10-03T14:00:00Z", "name": "Lena Park" }
- Backend sparar bokningen i databasen och svarar med status
201 Createdoch:
{ "id": 5001, "status": "confirmed" }
- Om tiden redan var upptagen kan den i stället svara med status
409 Conflictoch:
{ "error": "slot_taken", "message": "That time was just booked. Please pick another." }
Sidan läser status eller error och visar rätt meddelande. Om sidan i stället visade en tom skärm skulle webbläsarens utvecklarverktyg (fliken Network) visa dig denna JSON — ofta den snabbaste ledtråden till vad som gick fel.
Nyckeltermer
| Term | Betydelse |
|---|---|
| Nyckel | Namnet i ett namn/värde-par, som "email". |
| Parsa | Förvandla JSON-text till data ett program kan använda. |
| Serialisera / stringify | Förvandla data till JSON-text för att skicka eller lagra. |
| Payload | Datan som skickas i en förfrågan eller ett svar. |
| Schema | En beskrivning av hur data ska se ut — vilka fält, vilka typer. JSON Schema är ett standardsätt att skriva ett sådant. |
| JSONB | Postgres binära JSON-kolumntyp, som kan indexeras och frågas. |
| NDJSON / JSON Lines | Ett JSON-objekt per rad, vanligt för loggar och strömning. |
Vanliga missuppfattningar
- ”JSON är JavaScript.” Det kommer från JavaScripts syntax, men det är oberoende av språk; Python, Java, C#, Go och resten läser det.
- ”Tal inom citattecken är okej.”
"35"är en sträng, inte ett tal. Att blanda dem orsakar buggar som att"35" + "5"blir"355". Pengar lagras ofta bäst som hela ören (3550) för att undvika avrundningsproblem. - ”JSON är säkert eftersom det bara är data.” JSON kan bära vad som helst, inklusive hemligheter. Lägg inte API-nycklar i JSON som skickas till webbläsaren.
- ”Lägg allt i en JSON-kolumn.” Bra för flexibla extrafält, men data du söker, filtrerar eller kopplar på hör oftast hemma i riktiga kolumner.
- ”AI:n returnerar alltid giltig JSON.” Modeller kan lägga till extra text eller bryta formatet. Många leverantörer erbjuder ett läge för strukturerade svar; din kod bör ändå kontrollera det som kommer tillbaka.
Vad du ska be din AI-byggare om
- ”Visa mig ett exempel på JSON som den här endpointen returnerar.”
- ”Returnera fel som JSON med en
error-kod och ett läsbartmessage.” - ”Lagra datum som ISO 8601-strängar i UTC och konvertera till lokal tid först när det visas på skärmen.”
- ”Lagra priser som heltal i ören.”
- ”Validera inkommande JSON på servern och avvisa förfrågningar med saknade eller felaktigt typade fält.”
- ”När AI-modellen anropas, be om JSON i exakt denna form och kontrollera det innan det används.”
JSON i Mythex
Du behöver inte skriva JSON för hand i Mythex — du beskriver vad du vill och agenten skriver koden som skickar och läser det. Det hjälper ändå att känna igen det: när något går sönder ger det agenten en exakt ledtråd om du klistrar in JSON-felet i chatten. Dokumentationens REST API-backend-recept ber om ”tydliga JSON-fel” från start, och integrera valfritt API-receptet täcker anrop till tjänster utanför. För den större bilden, se REST vs GraphQL och hur du felsöker en AI-byggd app.
Frågor
Vad är JSON, enkelt uttryckt?
JSON (JavaScript Object Notation) är ett textformat för att skriva ner strukturerad data som namn och värden, till exempel ”name”: ”Lena”. Nästan varje webb-API använder det för att skicka data fram och tillbaka, och många appar använder det för inställningar och lagrad data.
Är JSON ett programmeringsspråk?
Nej. JSON är ett dataformat, inte ett språk. Det kan inte göra något på egen hand — det beskriver bara data. Även om det kommer från JavaScript kan praktiskt taget varje programmeringsspråk läsa och skriva det.
Vad är skillnaden mellan JSON och ett JavaScript-objekt?
De ser likadana ut, men JSON är strängare. I JSON måste varje nyckel stå inom dubbla citattecken, strängar använder dubbla citattecken, det finns inga kommentarer, inga avslutande kommatecken, och värdena är begränsade till strängar, tal, true, false, null, objekt och arrayer.
Varför säger min JSON att den är ogiltig?
De vanliga orsakerna är ett avslutande kommatecken efter sista posten, enkla citattecken i stället för dubbla, ett saknat kommatecken mellan poster, en oavslutad klammerparentes, eller en kommentar. Klistra in den i en JSON-validerare så pekar den på raden.