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 gestructureerde, 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)