Ga naar hoofdinhoud

Python JSON-gegevens: een gids met voorbeelden

Leer werken met JSON in Python, inclusief serialisatie, deserialisatie, opmaak, prestaties optimaliseren, werken met APIs en de beperkingen en alternatieven van JSON begrijpen.
Bijgewerkt 1 jun 2026  · 6 min lezen

JSON (JavaScript Object Notation) is een lichtgewicht gegevensuitwisselingsformaat dat een populaire keuze is geworden voor gegevensuitwisseling in veel programmeertalen, waaronder Python. Met zijn eenvoudige syntaxis en het vermogen om complexe datastructuren te representeren, is JSON een integraal onderdeel geworden van moderne webontwikkeling en drijft het alles aan van APIs tot client-side webapplicaties. 

In deze tutorial verken ik de basis van werken met JSON in Python, waaronder serialisatie, deserialisatie, JSON-bestanden lezen en schrijven, opmaak en meer. Aan het einde van deze tutorial kun je:

  • JSON en de voor- en nadelen ervan begrijpen
  • Gebruiksscenario’s voor JSON identificeren en het vergelijken met gangbare alternatieven
  • JSON-gegevens effectief serialiseren en deserialiseren in Python
  • Werken met JSON-gegevens in de programmeertaal Python
  • JSON-gegevens in Python opmaken met de `json`-bibliotheek
  • De prestaties optimaliseren bij het werken met JSON-gegevens
  • JSON-gegevens beheren bij API-ontwikkeling.

Wat is JSON?

JSON (JavaScript Object Notation) is een lichtgewicht, taalonafhankelijk gegevensuitwisselingsformaat dat breed wordt toegepast en ondersteund door veel programmeertalen en frameworks. Het is een goede keuze voor gegevensuitwisseling wanneer je een eenvoudig, gemakkelijk leesbaar formaat nodig hebt dat complexe datastructuren ondersteunt en eenvoudig kan worden gedeeld tussen verschillende computerprogramma’s.

Het perfecte gebruiksscenario voor JSON is wanneer er gegevens moeten worden uitgewisseld tussen webgebaseerde applicaties, zoals wanneer je een formulier op een website invult en de informatie naar een server wordt gestuurd voor verwerking. 

JSON is ideaal voor dit scenario omdat het een lichtgewicht en efficiënt formaat is dat minder bandbreedte en opslagruimte vereist dan andere formaten zoals XML. Daarnaast ondersteunt JSON complexe datastructuren zoals geneste objecten en arrays, wat het eenvoudig maakt om gestructureerde gegevens tussen verschillende systemen te representeren en uit te wisselen. Enkele andere gebruiksscenario’s voor het JSON-formaat zijn:

  1. Application Programming Interface (APIs). JSON wordt veel gebruikt voor het bouwen van APIs (Application Programming Interfaces) die verschillende systemen en applicaties met elkaar laten communiceren. Zo gebruiken veel webgebaseerde APIs JSON als gegevensformaat voor het uitwisselen van data tussen verschillende applicaties, waardoor integratie met verschillende programmeertalen en platforms eenvoudig is.
  2. Configuratiebestanden. JSON biedt een eenvoudig en goed leesbaar formaat voor het opslaan en ophalen van configuratiegegevens. Dit kan instellingen voor de applicatie omvatten, zoals de lay-out van een gebruikersinterface of gebruikersvoorkeuren.
  3. IoT (Internet of Things).  IoT-apparaten genereren vaak grote hoeveelheden data, die efficiënter kunnen worden opgeslagen en verzonden tussen sensoren en andere apparaten met behulp van JSON. 

JSON-verzoekproces

Voorbeeld van JSON-gegevens

python_obj = {
  "name": "John Doe",
  "age": 30,
  "email": "[email protected]",
  "is_employee": True,
  "hobbies": [
    "reading",
    "playing soccer",
    "traveling"
  ],
  "address": {
    "street": "123 Main Street",
    "city": "New York",
    "state": "NY",
    "zip": "10001"
  }
}

print(python_obj)

In dit voorbeeld hebben we een JSON-object dat een persoon voorstelt. Het object heeft verschillende eigenschappen: name, age, email en is_employee. De eigenschap hobbies is een array met drie strings. De eigenschap address is een object met meerdere eigen eigenschappen, zoals street, city, state en zip.

Let op dat JSON-gegevens doorgaans zijn geformatteerd als een reeks sleutel-waardeparen, waarbij de sleutel een string is en de waarde verschillende typen kan hebben, zoals string, number, boolean, array of object.

Voor- en nadelen van JSON gebruiken

Hieronder hebben we enkele plus- en minpunten van het gebruik van JSON op een rijtje gezet. 

Voordelen van werken met een JSON-bestand:

Enkele van de belangrijkste voordelen van JSON zijn dat het:

  1. Lichtgewicht en makkelijk te lezen. JSON-bestanden zijn gemakkelijk te lezen en te begrijpen, zelfs voor niet-technische gebruikers. Ze zijn ook lichtgewicht, wat betekent dat ze eenvoudig via internet kunnen worden verzonden.
  2. Interoperabel: JSON-bestanden zijn interoperabel, wat betekent dat ze eenvoudig kunnen worden uitgewisseld tussen verschillende systemen en platforms. Dit komt doordat JSON een breed ondersteund standaardformaat is en veel applicaties en services JSON gebruiken voor gegevensuitwisseling. Daardoor kan werken met JSON-bestanden het eenvoudiger maken om verschillende onderdelen van een systeem te integreren of data te delen tussen verschillende applicaties.
  3. Eenvoudig te valideren: JSON-bestanden kunnen eenvoudig worden gevalideerd tegen een schema om te garanderen dat ze voldoen aan een specifieke structuur of set regels. Dit helpt om fouten en inconsistenties in de data vroegtijdig te onderscheppen, wat tijd kan besparen en problemen later kan voorkomen. JSON-schemas kunnen ook worden gebruikt om automatisch documentatie te genereren voor de data die in het JSON-bestand is opgeslagen.

Nadelen van werken met een JSON-bestand:

  1. Beperkte ondersteuning voor complexe datastructuren: Hoewel JSON-bestanden een breed scala aan datatypen ondersteunen, zijn ze minder geschikt voor het opslaan van complexe datastructuren zoals grafen of bomen. Dit kan het lastiger maken om met bepaalde soorten data te werken met JSON-bestanden.
  2. Geen afdwinging van schema: JSON-bestanden dwingen geen schema af, wat betekent dat het mogelijk is om inconsistente of ongeldige data in een JSON-bestand op te slaan. Dit kan leiden tot fouten en bugs in applicaties die afhankelijk zijn van de data in het bestand.
  3. Beperkte query- en indexeermogelijkheden: JSON-bestanden bieden niet hetzelfde niveau van query- en indexeermogelijkheden als traditionele databases. Dit kan het moeilijk maken om complexe zoekopdrachten uit te voeren of specifieke subsetten van data uit een groot JSON-bestand op te halen.

Topalternatieven voor JSON voor efficiënte gegevensuitwisseling


Er zijn verschillende alternatieven voor JSON die kunnen worden gebruikt voor gegevensuitwisseling of opslag, elk met zijn eigen sterke en zwakke punten. Enkele populaire alternatieven voor JSON zijn:

  1. XML (Extensible Markup Language). XML is een opmaaktaal die tags gebruikt om elementen te definiëren en attributen om de gegevens te beschrijven. Het is een uitgebreider formaat dan JSON, maar heeft sterke ondersteuning voor schemavalidatie en documentstructuur.
  2. YAML (Yet Another Markup Language). YAML is een voor mensen leesbaar gegevensserialisatieformaat dat is ontworpen om gemakkelijk te lezen en te schrijven te zijn. Het is bondiger dan XML en ondersteunt complexe datatypen en commentaar.
  3. MessagePack. MessagePack is een binair serialisatieformaat dat compacter en efficiënter is dan JSON. Het ondersteunt complexe datatypen en is ideaal voor het overdragen van data via netwerken met lage bandbreedte.
  4. Protocol Buffers. Protocol Buffers is een binair serialisatieformaat ontwikkeld door Google. Het is ontworpen om zeer efficiënt te zijn en heeft sterke ondersteuning voor schemavalidatie, waardoor het ideaal is voor grootschalige gedistribueerde systemen.
  5. BSON (Binary JSON). BSON is een binair serialisatieformaat dat het JSON-formaat uitbreidt met extra datatypen en optimalisaties voor efficiëntie. Het is ontworpen voor efficiënte gegevensopslag en -overdracht in MongoDB-databases.

De keuze voor een gegevensuitwisselingsformaat hangt af van het specifieke gebruiksscenario en de vereisten van de applicatie. JSON blijft een populaire keuze vanwege de eenvoud, veelzijdigheid en brede adoptie, maar andere formaten zoals XML, YAML, MessagePack, Protocol Buffers en BSON kunnen geschikter zijn voor bepaalde use-cases.

Python-bibliotheken om met JSON-gegevens te werken

Er zijn een paar populaire Python-packages die je kunt gebruiken om met JSON-bestanden te werken:

  1. json. Dit is een ingebouwd Python-package dat methoden biedt voor het encoderen en decoderen van JSON-gegevens.
  2. simplejson. Dit package biedt een snelle JSON-encoder en -decoder met ondersteuning voor Python-specifieke typen.
  3. ujson. Dit package is een ultrarapide JSON-encoder en -decoder voor Python.
  4. jsonschema. Dit package biedt een manier om JSON-gegevens te valideren aan de hand van een opgegeven schema.

JSON-serialisatie en -deserialisatie

JSON-serialisatie en -deserialisatie zijn de processen waarbij JSON-gegevens worden omgezet van en naar andere formaten, zoals Python-objecten of strings, om de gegevens te verzenden of op te slaan.

Serialisatie is het proces waarbij een object of datastructuur wordt omgezet in een JSON-string. Dit proces is nodig om de gegevens te verzenden of op te slaan in een formaat dat door andere systemen of programma’s kan worden gelezen. JSON-serialisatie is een veelgebruikte techniek in webontwikkeling, waar data vaak wordt uitgewisseld tussen verschillende systemen of applicaties.

Deserialisatie is daarentegen het proces waarbij een JSON-string wordt teruggezet naar een object of datastructuur. Dit is nodig om de gegevens in een programma of systeem te gebruiken. JSON-deserialisatie wordt vaak gebruikt in webontwikkeling om gegevens te parsen die van een API of andere bron zijn ontvangen.

JSON-serialisatie en -deserialisatie zijn belangrijke technieken voor het werken met JSON-gegevens in verschillende contexten, van webontwikkeling tot data-analyse en meer. Veel programmeertalen bieden ingebouwde bibliotheken of packages om serialisatie en deserialisatie eenvoudig en efficiënt te maken.

Hier zijn enkele veelgebruikte functies uit de json-bibliotheek die worden gebruikt voor serialisatie en deserialisatie.

1. json.dumps()

Deze functie wordt gebruikt om een Python-object te serialiseren naar een JSON-string. De functie dumps() neemt één argument, het Python-object, en retourneert een JSON-string. Hier is een voorbeeld:

import json

# Python object to JSON string
python_obj = {'name': 'John', 'age': 30}

json_string = json.dumps(python_obj)
print(json_string)  

# Expected output: {"name": "John", "age": 30}

2. json.loads()

Deze functie wordt gebruikt om een JSON-string te parsen naar een Python-object. De functie loads() neemt één argument, de JSON-string, en retourneert een Python-object. Hier is een voorbeeld: 

import json

# JSON string to Python object
json_string = '{"name": "John", "age": 30}'

python_obj = json.loads(json_string)

print(python_obj)  

# Expected output: {'name': 'John', 'age': 30}

3. json.dump()

Deze functie wordt gebruikt om een Python-object te serialiseren en naar een JSON-bestand te schrijven. De functie dump() neemt twee argumenten: het Python-object en het bestandobject. Hier is een voorbeeld:

import json

# serialize Python object and write to JSON file
python_obj = {'name': 'John', 'age': 30}
with open('data.json', 'w') as file:
    json.dump(python_obj, file)

# No expected output

4. json.load()

Deze functie wordt gebruikt om een JSON-bestand te lezen en de inhoud ervan te parsen naar een Python-object. De functie load() neemt één argument, het bestandobject, en retourneert een Python-object. Hier is een voorbeeld:

import json

# read JSON file and parse contents
with open('data.json', 'r') as file:
    python_obj = json.load(file)
print(python_obj)  

# Expected output: {'name': 'John', 'age': 30}

Python en JSON hebben verschillende datatypen, waarbij Python een breder scala aan datatypen biedt dan JSON. Hoewel Python in staat is om ingewikkelde datastructuren zoals sets en dictionaries op te slaan, is JSON beperkt tot het omgaan met strings, numbers, booleans, arrays en objects. Laten we naar enkele verschillen kijken:

Python

JSON

dict

Object

list

Array

tuple

Array

str

String

int

Number

float

Number

True

true

False

false

None

null

Python-lijst naar JSON

Om een Python-lijst naar JSON-formaat te converteren, kun je de methode json.dumps() uit de json-bibliotheek gebruiken.

import json

my_list = [1, 2, 3, "four", "five"]

json_string = json.dumps(my_list)

print(json_string)

# Expected output: [1, 2, 3, "four", "five"]

In dit voorbeeld hebben we een lijst my_list met een mix van gehele getallen en strings. We gebruiken vervolgens de methode json.dumps() om de lijst te converteren naar een JSON-geformatteerde string, die we opslaan in de variabele json_string.

JSON-gegevens opmaken

In Python biedt de functie json.dumps() opties voor het opmaken en ordenen van de JSON-uitvoer. Hier zijn enkele veelvoorkomende opties:

1. Indent

Deze optie specificeert het aantal spaties dat wordt gebruikt voor inspringing in de uitvoer-JSON-string. Bijvoorbeeld:

import json

data = {
    "name": "John",
    "age": 30,
    "city": "New York"
}

json_data = json.dumps(data, indent=2)

print(json_data)

# Expected output: a JSON formatted string with an indentation of 2 spaces for each level of nesting:
# {
#   "name": "John",
#   "age": 30,
#   "city": "New York"
# }

2. Sort_keys

Deze optie specificeert of de sleutels in de uitvoer-JSON-string alfabetisch moeten worden gesorteerd. Bijvoorbeeld:

import json

data = {
    "name": "John",
    "age": 30,
    "city": "New York"
}

json_data = json.dumps(data, sort_keys=True)

print(json_data)

# Expected output: {"age": 30, "city": "New York", "name": "John"}

3. Separators

Met deze optie kun je de scheidingstekens opgeven die in de uitvoer-JSON-string worden gebruikt. De parameter separators neemt een tuple van twee strings aan, waarbij de eerste string de scheiding is tussen sleutel-waardeparen in een JSON-object en de tweede string de scheiding tussen items in JSON-arrays. Bijvoorbeeld:

import json

data = {
    "name": "John",
    "age": 30,
    "city": "New York"
}

json_data = json.dumps(data, separators=(",", ":"))

print(json_data)

# Expected output: a JSON formatted string with a comma separator between key-value pairs and a colon separator between keys and values:
# {"name":"John","age":30,"city":"New York"}

Python-voorbeeld - JSON-gegevens in APIs

import requests
import json

url = "https://jsonplaceholder.typicode.com/posts"
response = requests.get(url)

if response.status_code == 200:
    data = json.loads(response.text)
    print(data)
else:
    print(f"Error retrieving data, status code: {response.status_code}")

# Expected output: a JSON object as the response of the request

GEFORMATTEERDE UITVOER:

Uitvoergegevens

Deze code gebruikt de requests-bibliotheek en de json-bibliotheek in Python om een verzoek te doen naar de URL "https://jsonplaceholder.typicode.com/posts" en data op te halen. De regel requests.get(url) doet het daadwerkelijke verzoek en slaat de response op in de variabele response.

De regel if response.status_code == 200: controleert of de responsecode 200 is, wat betekent dat het verzoek is geslaagd. Als het verzoek slaagt, laadt de code vervolgens de responsetekst in een Python-dictionary met behulp van de methode json.loads() en slaat deze op in de variabele data.


Wil je meer over dit onderwerp leren? Bekijk dan onze tutorial over Web APIs, Python Requests & een HTTP-request uitvoeren in Python.

JSON-prestaties optimaliseren in Python

Als je met grote hoeveelheden JSON-gegevens in Python werkt, is het belangrijk om de prestaties van je code te optimaliseren zodat deze efficiënt draait. Hier zijn enkele tips om JSON-prestaties in Python te optimaliseren:

  1. Gebruik de bibliotheken cjson of ujson. Deze bibliotheken zijn sneller dan de standaard JSON-bibliotheek in Python en kunnen de prestaties van JSON-serialisatie en -deserialisatie aanzienlijk verbeteren.
  2. Vermijd onnodige conversies. Heen en weer converteren tussen Python-objecten en JSON-gegevens kan prestatie-intensief zijn. Probeer indien mogelijk direct met JSON-gegevens te werken en onnodige conversies te vermijden.
  3. Gebruik generators voor grote JSON-gegevens. Bij het werken met grote hoeveelheden JSON-gegevens kunnen generators helpen het geheugenverbruik te verminderen en de prestaties te verbeteren.
  4. Minimaliseer netwerkoverhead. Wanneer je JSON-gegevens via een netwerk verzendt, kan het minimaliseren van de hoeveelheid overgedragen data de prestaties verbeteren. Gebruik compressietechnieken zoals gzip om de grootte van JSON-gegevens te verkleinen voordat je ze via een netwerk verzendt.
  5. Gebruik caching. Als je vaak dezelfde JSON-gegevens opvraagt, kan het cachen van de data de prestaties verbeteren door het aantal verzoeken om de data te laden te verminderen.
  6. Optimaliseer datastructuur: Ook de structuur van de JSON-data kan invloed hebben op de prestaties. Een eenvoudigere, plattere datastructuur kan beter presteren dan een complexe, geneste structuur.

Beperkingen van het JSON-formaat

Hoewel JSON een populair formaat is voor gegevensuitwisseling in veel applicaties, zijn er enkele implementatiebeperkingen om rekening mee te houden:

  1. Gebrek aan ondersteuning voor sommige datatypen. JSON heeft beperkte ondersteuning voor bepaalde datatypen, zoals binaire data, datums en tijden. Hoewel er workarounds zijn om deze typen in JSON te representeren, kan dit serialisatie en deserialisatie ingewikkelder maken.
  2. Geen ondersteuning voor commentaar. In tegenstelling tot andere formaten, zoals YAML en XML, ondersteunt JSON geen commentaar. Dit kan het lastiger maken om context of documentatie toe te voegen aan JSON-gegevens.
  3. Beperkte flexibiliteit voor extensies. Hoewel JSON extensies ondersteunt via aangepaste properties of de $schema-property, biedt het formaat minder flexibiliteit voor extensies dan andere formaten, zoals XML of YAML.
  4. Geen standaard voor het behouden van sleutelvolgorde. JSON heeft geen standaardmanier om de volgorde van sleutels in een object te behouden, wat het moeilijker kan maken om JSON-objecten te vergelijken of samen te voegen.
  5. Beperkte ondersteuning voor circulaire referenties. JSON heeft beperkte ondersteuning voor circulaire referenties, waarbij een object naar zichzelf verwijst. Dit kan het moeilijker maken om sommige datastructuren in JSON te representeren.

Het is belangrijk om je bewust te zijn van deze implementatiebeperkingen wanneer je met JSON-gegevens werkt, om te bepalen of het formaat geschikt is voor je behoeften en om potentiële problemen met serialisatie, deserialisatie en datarepresentatie te vermijden.

Conclusie

JSON is een veelzijdig en veelgebruikt formaat voor gegevensuitwisseling in moderne webontwikkeling, en Python biedt een krachtig stel tools om met JSON-gegevens te werken. Of je nu een API bouwt of met client-side webapplicaties werkt, de basis van JSON in Python begrijpen is een essentiële vaardigheid voor elke moderne developer. Door de technieken in deze tutorial onder de knie te krijgen, ben je goed op weg om met JSON-gegevens in Python te werken en robuuste, schaalbare applicaties te bouwen die de kracht van dit gegevensuitwisselingsformaat benutten.

Wil je leren hoe je pijplijnen bouwt om data te importeren die in gangbare opslagformaten is bewaard? Bekijk dan onze cursus Streamlined Data Ingestion with pandas. Je gebruikt pandas, een belangrijke Python-bibliotheek voor analytics, om data uit allerlei bronnen te halen, waaronder een spreadsheet met enquêteresultaten, een database met meldingen van publieke diensten en een API van een populaire reviewsite. 

FAQs

Hoe kan ik JSON-bestanden verwerken die te groot zijn om in het geheugen te passen?

Voor het werken met grote JSON-bestanden die niet in het geheugen passen, kun je de data stapsgewijs verwerken met Python’s ijson-bibliotheek of het bestand regel-voor-regel lezen als de JSON is opgebouwd uit een reeks kleinere objecten. Bijvoorbeeld:

import ijson

with open('large_file.json', 'r') as file:
    for item in ijson.items(file, 'item'):
        print(item)  # Process each JSON item individually

Hoe voeg ik twee JSON-objecten samen in Python?

Je kunt twee JSON-objecten samenvoegen door ze eerst te deserialiseren naar Python-dictionaries en vervolgens de ene dictionary bij te werken met de inhoud van de andere:

import json

json1 = '{"name": "Alice", "age": 25}'
json2 = '{"city": "New York", "hobbies": ["reading", "cycling"]}'

dict1 = json.loads(json1)
dict2 = json.loads(json2)

dict1.update(dict2)
merged_json = json.dumps(dict1)

print(merged_json)
# Output: {"name": "Alice", "age": 25, "city": "New York", "hobbies": ["reading", "cycling"]}

Kan JSON-data commentaar bevatten, en hoe kan ik dat in Python afhandelen?

JSON ondersteunt van zichzelf geen commentaar, maar als je werkt met een niet-standaard JSON-bestand dat commentaar bevat (bijv. met // of /* */), kun je het bestand vooraf verwerken om het commentaar te verwijderen voordat je het parseert. Hier is een voorbeeld:

import json
import re

with open('file_with_comments.json', 'r') as file:
    content = file.read()

# Remove comments
content = re.sub(r'//.*?$|/\*.*?\*/', '', content, flags=re.DOTALL | re.MULTILINE)

data = json.loads(content)
print(data)

Moez Ali's photo
Author
Moez Ali
LinkedIn
Twitter

Data scientist, oprichter en maker van PyCaret

Onderwerpen

Meer leren over Python

Cursus

Introductie tot databases in Python

4 Hr
101.2K
In deze cursus leer je de basis van relationele databases en hoe je ermee omgaat.
Bekijk detailsRight Arrow
Begin met de cursus
Meer zienRight Arrow
Gerelateerd

blog

AI vanaf nul leren in 2026: een complete gids van de experts

Ontdek alles wat je moet weten om in 2026 AI te leren, van tips om te beginnen tot handige resources en inzichten van industrie-experts.
Adel Nehme's photo

Adel Nehme

15 min

Meer zienMeer zien