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:

PythonJSON
dictobject
list, tuplearray
strstring
int, floatnumber
Truetrue
Falsefalse
Nonenull

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)

 

Verwante artikelen