JSON (JavaScript Object Notation) — är ett lättviktigt textformat för datautbyte, baserat på JavaScript-objektsyntax. Det används överallt: från REST API och konfigurationsfiler till lagring av data i databaser och mobilappar. Enligt den officiella JSON-webbplatsen är formatet oberoende av programmeringsspråk och stöds av praktiskt taget alla moderna plattformar. JSON har blivit de facto-standarden för dataöverföring mellan klient och server.
Huvudpunkter
JSON — är ett textformat för representation av strukturerad data, baserat på JavaScript-syntax. Trots sitt ursprung från JavaScript är formatet helt språkoberoende — parsrar och serialiserare finns för alla populära programmeringsspråk.
JSONs historia började i början av 2000-talet, när Douglas Crockford separerade en delmängd av JavaScript-syntax för datautbyte. År 2013 standardiserades formatet som ECMA-404 och senare som ISO/IEC 21778:2017. Namnet står för JavaScript Object Notation.
Den främsta fördelen med JSON är dess minimalistiska syntax. För att beskriva data används endast sex typer: sträng, nummer, boolean, null, array och objekt. Detta är tillräckligt för att representera alla datastrukturer som används i applikationer.
JSON-syntax är extremt enkel: data representeras som nyckel-värdepar, där nyckeln är en sträng inom dubbla citattecken och värdet är en av de sex grundläggande typerna. Objekt omges av klamrar, arrayer av hakparenteser. Strängar använder obligatoriskt dubbla citattecken, enkla citattecken är inte tillåtna.
Tal i JSON kan vara heltal eller flyttal, positiva eller negativa, med exponentiell notation. Booleska värden representeras av true och false, och frånvaro av värde representeras av null. Arrayer innehåller en ordnad samling värden av vilken typ som helst, inklusive nästlade arrayer och objekt.
{
"name": "JSON",
"type": "text",
"version": 2024,
"flexible": true,
"extensions": null,
"languages": [
"JavaScript",
"Python",
"Java"
],
"nested": {
"info": "stöd för nästling"
}
}
| Typ | Exempel | Beskrivning |
|---|---|---|
| Sträng | “text” |
Inom dubbla citattecken, med escape-sekvenser |
| Tal | 42 |
Heltal, flyttal, exponentiellt |
| Boolean | true |
true eller false — utan citattecken |
| null | null |
Frånvaro av värde |
| Objekt | {} |
Oordnad samling av nyckel-värdepar |
| Array | [] |
Ordnad lista av värden |
JSON är det primära datautbytesformatet för REST API inom mobil- och webbutveckling. Servern skickar JSON i svarskroppen, klienten — i förfråganskroppen. Standardrubriken Content-Type för JSON är application/json.
Moderna REST API använder JSON för att överföra alla typer av data: från enkla listor till komplexa nästlade strukturer med relationer mellan entiteter. Klientbiblioteket (t.ex. Axios i JavaScript eller Retrofit på Android) serialiserar och deserialiserar automatiskt JSON, vilket befriar utvecklaren från manuell tolkning.
En viktig fördel med JSON i REST API är möjligheten till partiell dataöverföring (partial response) via förfrågeparametrar, samt stöd för nästlade resurser utan ytterligare förfrågningar till servern.
JSON-tolkning på mobila plattformar utförs med inbyggda verktyg. Android använder biblioteken Gson från Google eller Moshi från Square, iOS använder Codable-protokollet med JSONDecoder. Varje plattform tillhandahåller praktiska verktyg för att konvertera JSON till inbyggda objekt och vice versa.
På Android är tillvägagångssättet med Gson eller Moshi populärt. Det räcker att definiera en data class med @SerializedName-annotationer och anropa fromJson för deserialisering. Biblioteket matchar automatiskt fältnamn i JSON med klassfält.
import com.google.gson.Gson
import com.google.gson.annotations.SerializedName
data class User(
@SerializedName("id") val id: Int,
@SerializedName("name") val name: String,
@SerializedName("email") val email: String
)
fun parseJson(jsonString: String): User {
val gson = Gson()
return gson.fromJson(jsonString, User::class.java)
}
På iOS används det inbyggda Codable-protokollet med JSONDecoder. Datastrukturen deklareras som en struct med Codable-protokollet, varefter JSON tolkas med en rad. JSONEncoder utför omvänd serialisering — konverterar objektet till JSON för sändning till servern.
import Foundation
struct User: Codable {
let id: Int
let name: String
let email: String
}
func parseJSON(from data: Data) throws -> User {
let decoder = JSONDecoder()
return try decoder.decode(User.self, from: data)
}
JSON och XML — två primära format för att överföra strukturerad data. JSON vinner i enkelhet och prestanda, XML i noggrannhet och validering. Valet mellan dem beror på projektkraven: för REST API väljs oftare JSON, för komplexa dokument med scheman — XML.
XML kräver stängningstaggar för varje element, vilket ökar datastorleken 2-3 gånger jämfört med JSON. Samtidigt stöder XML namnrymder, XSD-scheman, attribut och XSLT-transformering, vilket gör det kraftfullare för dokumentflöde och integration av företagssystem.
| Egenskap | JSON | XML |
|---|---|---|
| Syntax | Minimalistisk, nyckel-värde | Tagg-baserad, öppna och stäng taggar |
| Datastorlek | Kompakt | 2-3 gånger större än JSON |
| Datatyper | Sex grundläggande typer | Endast text, typer via scheman |
| Validering | Ingen inbyggd, via JSON Schema | XSD — strikt och mogen |
| Namnrymder | Nej | Fullt stöd för namespace |
| Tolkningshastighet | Hög | Lägre på grund av komplexitet |
Exempel visar typiska JSON-operationer inom mobilutveckling: tolkning av API-svar, skapande av JSON för sändning och bearbetning av nästlade strukturer. Förståelse av dessa mönster är nödvändig för varje mobilapputvecklare.
I JavaScript konverterar JSON.stringify ett objekt till en JSON-sträng. Det andra argumentet kan vara en array av nycklar för selektiv serialisering eller en ersättningsfunktion. Det tredje argumentet anger indrag för formatering.
interface Order {
id: string;
items: OrderItem[];
total: number;
createdAt: string;
}
const order: Order = {
id: 'ord_001',
items: [{ product: 'phone', quantity: 2 }],
total: 1599.98,
createdAt: '2026-07-03T10:00:00Z'
};
const jsonString = JSON.stringify(order, null, 2);
I Kotlin med Moshi-biblioteket bearbetas nästlade JSON-objekt genom nästlade data class-objekt. @Json-annotationen anger fältnamnet i JSON om det skiljer sig från egenskapsnamnet i klassen. Arrayer representeras som List med elementtypen.
import com.squareup.moshi.Moshi
import com.squareup.moshi.kotlin.reflect.KotlinJsonAdapterFactory
data class ApiResponse(
val status: String,
val data: List<Product>,
val pagination: Pagination
)
data class Product(
val id: Int,
val title: String,
val price: Double
)
data class Pagination(
val page: Int,
val total: Int
)
val moshi = Moshi.Builder()
.add(KotlinJsonAdapterFactory())
.build()
JSON Schema — är ett språk för att beskriva strukturen av ett JSON-dokument, analogt med XSD för XML. Med JSON Schema kan obligatoriska fält, datatyper, värdeintervall, strängmönster och nästlad struktur anges. Validering enligt schemat upptäcker datafel innan de bearbetas i applikationen.
JSON Schema används flitigt i OpenAPI (Swagger) för att dokumentera REST API, i formulär för inmatningsvalidering och vid testning. Schemafilen är själv ett JSON-dokument, vilket möjliggör användning av standard JSON-parsrar för att läsa den. Det finns online-validerare och bibliotek för alla populära programmeringsspråk.
Inom mobilutveckling används JSON Schema för att validera serversvar i testfasen och för att kontrollera konfigurationsfiler. Bibliotek som network-validator på Android och json-schema-validator gör det möjligt att bädda in validering direkt i utvecklingsprocessen, vilket förhindrar fel i tidiga skeden.
Vanliga frågor
JSON stöder sex typer: sträng (inom dubbla citattecken), nummer (heltal och flyttal), boolean (true/false), null, objekt (nyckel-värdepar i {}) och array (lista av värden i []). Detta räcker för alla datastrukturer i applikationer.
Nej, JSON-standarden stöder inte kommentarer. Om du behöver kommentarer, använd JSON5 (utökat JSON) eller lägg till ett fält med beskrivning, till exempel “_comment”: “förklaring”. Vissa verktyg, som VS Code, stöder kommentarer i konfigurations-JSON-filer, men detta är en icke-standard utökning.
JSONB — är ett binärt lagringsformat för JSON i PostgreSQL. Till skillnad från text-JSON bearbetas JSONB snabbare, stöder indexering (GIN-index) och garanterar unika nycklar. Samtidigt tar JSONB mer diskutrymme på grund av tillagd metadata.
Använd JSONLint (jsonlint.com) för snabb kontroll, inbyggd JSON.parse() i JavaScript med try-catch, eller IDE-plugins. Validering omfattar kontroll av citattecken, parentesers stängning och typöverensstämmelse. För komplexa scheman, använd JSON Schema Validator.
Det finns ingen begränsning i JSON-specifikationen. I praktiken begränsas storleken av enhetens minne och tolkarens kapacitet. För mobilappar rekommenderas att inte överskrida 1-2 MB per svar och för stora data använda paginering eller strömningsöverföring.
Sammanfattning
Vi utvecklar en mobil applikation nyckelfärdigt
IT Sectr skapar iOS- och Android-applikationer för startups och företag sedan 2017. Vi ger dig råd och föreslår den bästa lösningen.
Läs också