JSON (JavaScript Object Notation) — is een lichtgewicht tekstformaat voor gegevensuitwisseling, gebaseerd op de JavaScript-objectsyntaxis. Het wordt overal gebruikt: van REST API's en configuratiebestanden tot het opslaan van gegevens in databases en mobiele apps. Volgens de officiële JSON-website is het formaat onafhankelijk van programmeertaal en wordt het door vrijwel alle moderne platforms ondersteund. JSON is de de facto standaard geworden voor gegevensoverdracht tussen client en server.
Belangrijkste punten
JSON — is een tekstformaat voor de weergave van gestructureerde gegevens, gebaseerd op de JavaScript-syntaxis. Ondanks zijn oorsprong uit JavaScript, is het formaat volledig taalonafhankelijk — parsers en serialiseerders bestaan voor alle populaire programmeertalen.
De geschiedenis van JSON begon in het begin van de jaren 2000, toen Douglas Crockford een subset van de JavaScript-syntaxis afsplitste voor gegevensuitwisseling. In 2013 werd het formaat gestandaardiseerd als ECMA-404 en later als ISO/IEC 21778:2017. De naam staat voor JavaScript Object Notation.
Het belangrijkste voordeel van JSON is de minimalistische syntaxis. Voor het beschrijven van gegevens worden slechts zes typen gebruikt: string, getal, boolean, null, array en object. Dit is voldoende voor het weergeven van alle gegevensstructuren die in applicaties worden gebruikt.
De JSON-syntaxis is uiterst eenvoudig: gegevens worden weergegeven als sleutel-waardeparen, waarbij de sleutel een string in dubbele aanhalingstekens is en de waarde een van de zes basistypen. Objecten worden tussen accolades geplaatst, arrays tussen vierkante haakjes. Strings gebruiken verplicht dubbele aanhalingstekens, enkele aanhalingstekens zijn niet toegestaan.
Getallen in JSON kunnen geheel of zwevendekomma zijn, positief of negatief, met exponentiële notatie. Booleaanse waarden worden weergegeven door true en false, en de afwezigheid van een waarde door null. Arrays bevatten een geordende verzameling waarden van elk type, inclusief geneste arrays en objecten.
{
"name": "JSON",
"type": "text",
"version": 2024,
"flexible": true,
"extensions": null,
"languages": [
"JavaScript",
"Python",
"Java"
],
"nested": {
"info": "ondersteuning voor nesting"
}
}
| Type | Voorbeeld | Beschrijving |
|---|---|---|
| String | „tekst“ |
In dubbele aanhalingstekens, met escape-reeksen |
| Getal | 42 |
Geheel, zwevendekomma, exponentieel |
| Boolean | true |
true of false — zonder aanhalingstekens |
| null | null |
Afwezigheid van waarde |
| Object | {} |
Ongeordende verzameling sleutel-waardeparen |
| Array | [] |
Geordende lijst van waarden |
JSON is het primaire gegevensuitwisselingsformaat voor REST API's in mobiele en webontwikkeling. De server stuurt JSON in de antwoordbody, de client in de verzoekbody. De standaard Content-Type-header voor JSON is application/json.
Moderne REST API's gebruiken JSON voor het verzenden van alle soorten gegevens: van eenvoudige lijsten tot complexe geneste structuren met relaties tussen entiteiten. De clientbibliotheek (bijv. Axios in JavaScript of Retrofit op Android) serialiseert en deserialiseert automatisch JSON, waardoor de ontwikkelaar van handmatig parseren wordt verlost.
Een belangrijk voordeel van JSON in REST API's is de mogelijkheid van gedeeltelijke gegevensoverdracht (partial response) via verzoekparameters, evenals ondersteuning voor geneste bronnen zonder extra serververzoeken.
JSON-parsing op mobiele platforms wordt uitgevoerd met ingebouwde hulpmiddelen. Android gebruikt de bibliotheken Gson van Google of Moshi van Square, iOS gebruikt het Codable-protocol met JSONDecoder. Elk platform biedt handige hulpmiddelen voor het converteren van JSON naar native objecten en vice versa.
Op Android is de aanpak met Gson of Moshi populair. Het volstaat om een data class te definiëren met @SerializedName-annotaties en fromJson aan te roepen voor deserialisatie. De bibliotheek matcht automatisch veldnamen in JSON met klassevelden.
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)
}
Op iOS wordt het ingebouwde Codable-protocol met JSONDecoder gebruikt. De gegevensstructuur wordt gedeclareerd als een struct met het Codable-protocol, waarna JSON met één regel wordt geparsed. JSONEncoder voert de omgekeerde serialisatie uit — converteert het object naar JSON voor verzending naar de server.
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 en XML — twee primaire formaten voor het verzenden van gestructureerde gegevens. JSON wint in eenvoud en prestaties, XML in nauwkeurigheid en validatie. De keuze ertussen hangt af van de projectvereisten: voor REST API wordt vaker JSON gekozen, voor complexe documenten met schema's — XML.
XML vereist sluitende tags voor elk element, wat de gegevensgrootte 2-3 keer vergroot in vergelijking met JSON. Tegelijkertijd ondersteunt XML naamruimten, XSD-schema's, attributen en XSLT-transformatie, wat het krachtiger maakt voor documentworkflow en integratie van bedrijfssystemen.
| Kenmerk | JSON | XML |
|---|---|---|
| Syntaxis | Minimalistisch, sleutel-waarde | Op tags, openende en sluitende tags |
| Gegevensgrootte | Compact | 2-3 keer groter dan JSON |
| Gegevenstypen | Zes basistypen | Alleen tekst, typen via schema's |
| Validatie | Geen ingebouwde, via JSON Schema | XSD — strikt en volwassen |
| Naamruimten | Nee | Volledige ondersteuning voor namespace |
| Parsingsnelheid | Hoog | Lager vanwege complexiteit |
Voorbeelden demonstreren typische JSON-bewerkingen in mobiele ontwikkeling: het parsen van API-antwoorden, het maken van JSON voor verzending en het verwerken van geneste structuren. Begrip van deze patronen is essentieel voor elke mobiele app-ontwikkelaar.
In JavaScript converteert JSON.stringify een object naar een JSON-string. Het tweede argument kan een array van sleutels zijn voor selectieve serialisatie of een vervangende functie. Het derde argument bepaalt de inspringing voor opmaak.
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);
In Kotlin met de Moshi-bibliotheek worden geneste JSON-objecten verwerkt via geneste data classes. De @Json-annotatie geeft de veldnaam in JSON aan als deze verschilt van de eigenschapsnaam van de klasse. Arrays worden weergegeven als List met het elementtype.
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 — is een taal voor het beschrijven van de structuur van een JSON-document, analoog aan XSD voor XML. Met JSON Schema kunnen verplichte velden, gegevenstypen, waardebereiken, stringpatronen en geneste structuur worden ingesteld. Validatie volgens het schema detecteert gegevensfouten voordat ze in de applicatie worden verwerkt.
JSON Schema wordt veel gebruikt in OpenAPI (Swagger) voor het documenteren van REST API's, in invoervalidatieformulieren en bij testen. Het schemabestand is zelf een JSON-document, waardoor standaard JSON-parsers kunnen worden gebruikt om het te lezen. Er zijn online validators en bibliotheken voor alle populaire programmeertalen.
In mobiele ontwikkeling wordt JSON Schema gebruikt voor het valideren van serverantwoorden in de testfase en voor het controleren van configuratiebestanden. Bibliotheken zoals network-validator op Android en json-schema-validator maken het mogelijk validatie direct in het ontwikkelproces in te bouwen, waardoor fouten in een vroeg stadium worden voorkomen.
Veelgestelde vragen
JSON ondersteunt zes typen: string (in dubbele aanhalingstekens), getal (geheel en zwevendekomma), boolean (true/false), null, object (sleutel-waardeparen in {}) en array (lijst van waarden in []). Dit is voldoende voor alle gegevensstructuren in applicaties.
Nee, de JSON-standaard ondersteunt geen opmerkingen. Als u opmerkingen nodig hebt, gebruik dan JSON5 (uitgebreide JSON) of voeg een veld met beschrijving toe, bijvoorbeeld „_comment“: „uitleg“. Sommige tools, zoals VS Code, ondersteunen opmerkingen in configuratie-JSON-bestanden, maar dit is een niet-standaard uitbreiding.
JSONB — is een binair opslagformaat voor JSON in PostgreSQL. In tegenstelling tot tekst-JSON wordt JSONB sneller verwerkt, ondersteunt het indexering (GIN-indexen) en garandeert het unieke sleutels. Tegelijkertijd neemt JSONB meer schijfruimte in beslag vanwege toegevoegde metadata.
Gebruik JSONLint (jsonlint.com) voor een snelle controle, ingebouwd JSON.parse() in JavaScript met try-catch, of IDE-plug-ins. Validatie omvat het controleren van de juistheid van aanhalingstekens, het sluiten van haakjes en typeconformiteit. Gebruik voor complexe schema's JSON Schema Validator.
Er is geen limiet in de JSON-specificatie. In de praktijk wordt de grootte beperkt door het geheugen van het apparaat en de mogelijkheden van de parser. Voor mobiele apps wordt aanbevolen niet meer dan 1-2 MB per antwoord te gebruiken, en voor grote gegevens paginering of streaming overdracht te gebruiken.
Samenvatting
We ontwikkelen een mobiele applicatie turnkey
IT Sectr creëert sinds 2017 iOS- en Android-applicaties voor startups en bedrijven. We adviseren u en stellen de beste oplossing voor.
Lees ook