JSON lezen en schrijven met Python
Op deze pagina:
Het JSON formaat is een populair formaat om gegevens uit te wisselen. JSON staat voor JavaScript Object Notation. Hoewel 'Javascript' in de naam voorkomt, kun je het ook met andere programeertalen gebruiken. JSON is een veelgebruikte methode voor het opslaan van gegevens in sleutel-waarde paren.
JSON lijkt erg op een dictionary, zoals in dit voorbeeld van een stukje JSON:
{
"naam":"barbie",
"kleur":"roze",
"partner":"Ken"
}
Tabel met een overzicht van de gegevensformaten van Python en JSON:
Python | JSON |
---|---|
dict | object |
list, tuple | array |
str | string |
int, float | number |
True | true |
False | false |
None | null |
Gegevens opslaan in het JSON formaat
JSON biedt gesctructureerde, recursieve opslag. Python's JSON module heeft alles om de gegevens uit en in je applicatie te krijgen.
#!/usr/bin/env python3
import json
# een lege dictionary aanmaken
team = {}
# dictionary vullen met gegevens die zelf weer uit dictionaries bestaan
team['anna'] = {'punten': 23, 'rang': 3}
team['fred'] = {'punten': 13, 'rang': 6}
team['charlie'] = {'punten': 18, 'rang': 7}
# gegevens wegschrijven als JSON
with open('mijndata.json', 'w') as bestand:
json.dump(team, bestand)
De dump() methode gebruik je als je gegevens wilt wegschrijven naar een bestand. De dumps() methode gebruik je (meestal tijdens testen/debuggen) om de uitvoer naar een string te sturen.
Je kunt nu de inhoud van het opgelsagen bestand bekijken met 'cat':
cat mydata.json
# resultaat:
{"anna": {"punten": 23, "rang": 3}, "fred": {"punten": 13, "rang": 6}, "charlie": {"punten": 18, "rang": 7}}
Gegevens in het JSON formaat ophalen
JSON gegevens weer teruglezen kan met JSON module’s json.load functie:
#!/usr/bin/env python3
import json
with open('mijndata.json') as bestand:
team = json.load(bestand)
print(team['anna'])
print(team['anna']['punten'])
print(team['anna']['rang'])
print(team['fred'])
print(team['fred']['punten'])
print(team['fred']['rang'])
# als laatste het bestand weer sluiten
bestand.close()
Naast de load() functie is er ook de loads() functie, deze zet een JSON string om in een Python object.
import json
json_str = '{"naam":"barbie", "kleur":"roze", "partner":"Ken"}'
print(json.loads(json_str))
Gegevens in JSON formaat ophalen via een API
Via een API krijg je vaak gegevens in JSON formaat
import json
import requests
response = requests.get("https://api.example.com/")
gegevens = json.loads(response.text)
print(gegevens)