Python Academy · Les

Geneste JSON-structuren verwerken

Navigeer door complexe geneste JSON-objecten en transformeer ze.

Les 2 van 414 stappen

Geneste JSON-structuren verwerken is een gratis Python Academy-les op CoddyKit. Dit is les 2 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Python Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Python Academy bevat in totaal 4 lessen.

Inleiding

JSON uit de praktijk is diep genest. Het is essentieel dat je weet hoe je door geneste structuren navigeert, ze transformeert en valideert.

Geneste sleutels openen

data['user']['address']['city'] navigeert door geneste dicts. Gebruik op elk niveau .get() om ontbrekende sleutels af te handelen.
import json
data = {'user': {'address': {'city': 'NYC', 'zip': '10001'}}}
print(data['user']['address']['city'])

Veilige toegang tot geneste gegevens

data.get('user', {}).get('address', {}).get('city') ketent .get()-aanroepen op een veilige manier.
data = {'user': {'name': 'Alice'}}
city = data.get('user', {}).get('address', {}).get('city', 'unknown')
print(city)

Arrays met objecten doorlopen

JSON-arrays met objecten zijn lijsten met dicts. Doorloop ze met een for-lus.
import json
data = json.loads('[{"name":"Alice"},{"name":"Bob"}]')
for user in data:
    print(user['name'])

Geneste JSON afvlakken

Schrijf een recursieve functie om geneste dicts af te vlakken tot een platte dict met sleutels met punten.
def flatten(d, prefix=''):
    result = {}
    for k, v in d.items():
        key = f'{prefix}.{k}' if prefix else k
        if isinstance(v, dict):
            result.update(flatten(v, key))
        else:
            result[key] = v
    return result
print(flatten({'a': {'b': {'c': 1}}, 'd': 2}))

Arrays filteren

[user for user in data if user.get('active')] filtert een JSON-array op basis van een voorwaarde.
data = [{'name':'A','active':True},{'name':'B','active':False}]
active = [u for u in data if u.get('active')]
print(active)

Geneste gegevens transformeren

Haal een veld uit elk genest object: [item['name'] for item in data]
data = [{'id': 1, 'name': 'Alice'}, {'id': 2, 'name': 'Bob'}]
names = [d['name'] for d in data]
print(names)

Schema valideren met jsonschema

pip install jsonschema. jsonschema.validate(instance, schema) veroorzaakt bij ongeldige gegevens een ValidationError.
# from jsonschema import validate
# schema = {'type':'object','required':['name']}
# validate({'name':'Alice'}, schema)  # OK
# validate({}, schema)  # raises ValidationError
print('schema validation demo')

Geneste dicts diepgaand bijwerken

Shallow dict.update() voegt geneste dicts niet samen. Schrijf een recursieve deep_update voor het samenvoegen van geneste dicts.
def deep_update(base, override):
    for k, v in override.items():
        if isinstance(v, dict) and isinstance(base.get(k), dict):
            deep_update(base[k], v)
        else:
            base[k] = v
    return base
result = deep_update({'a': {'x': 1}}, {'a': {'y': 2}})
print(result)

Query's in jq-stijl met Python

Gebruik voor complexe query's de jq-bibliotheek of een aangepaste recursieve zoekopdracht: find_all(data, 'key').
def find_all(obj, key):
    if isinstance(obj, dict):
        if key in obj: yield obj[key]
        for v in obj.values(): yield from find_all(v, key)
    elif isinstance(obj, list):
        for item in obj: yield from find_all(item, key)
data = {'a': {'name': 'x'}, 'b': [{'name': 'y'}]}
print(list(find_all(data, 'name')))

Serialiseren naar NDJSON

JSON met één object per regel (NDJSON): één JSON-object per regel. Schrijf met json.dumps(obj) + '\n'.
import json
objects = [{'id': 1}, {'id': 2}, {'id': 3}]
ndjson = '\n'.join(json.dumps(o) for o in objects)
print(ndjson)

Korte controle

Wat geeft data.get('key', {}).get('nested') terug als 'key' ontbreekt?

Samenvatting

Geneste JSON: koppel .get() voor veilige toegang. Doorloop arrays met for. Maak structuren plat met recursie. Filter met een lijstcomprehensie. Gebruik jsonschema voor validatie.

Ga door

Goed bezig! Ga door naar de volgende les.
Gratis beginnen

Leer Python met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
76
Lessen
320

Veelgestelde vragen

Is de les “Geneste JSON-structuren verwerken” gratis?

Ja — de volledige tekst van “Geneste JSON-structuren verwerken” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus Python Academy wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus Python Academy bevat in totaal 4 lessen.

Wat leer ik in “Geneste JSON-structuren verwerken”?

Navigeer door complexe geneste JSON-objecten en transformeer ze. Je oefent met Python Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met Python Academy te beginnen?

Ervaring vooraf is niet nodig. Python Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 2 van 4.

Hoe lang duurt de les “Geneste JSON-structuren verwerken”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over Python Academy?

Ja. Elke les over Python Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. JSON coderen en decoderen
  2. Geneste JSON-structuren verwerken
  3. CSV lezen met csv.reader
  4. CSV schrijven met csv.DictWriter
← Terug naar Python Academy