Exercice 92 / 100

JSON en Python

Crée un dictionnaire de 2 utilisateurs (Alice, 25 ans, scores [85,90,78] et Bob, 30 ans, scores [92,88,95]), sérialise en JSON et désérialise

Rappel json (lib standard json). Sert à sérialiser des structures Python en texte pour les stocker ou les transmettre.

Correspondance json ↔ Python :

object { } ↔ dict array [ ] ↔ list string ↔ str number ↔ int / float true/false ↔ True / False null ↔ None
JSON et Python ne nomment pas les mêmes choses de la même façon : un objet devient un dict, un tableau une liste, true devient True et null devient None

Les 4 fonctions clés

json.loads(s) parse une str JSON → objet Python json.load(f) parse un fichier ouvert json.dumps(obj) sérialise un objet → str JSON json.dump(obj, f) écrit dans un fichier

Mnémo : le 's' à la fin = string.

Exemple : structure imbriquée

import json
data = { 'utilisateurs': [ {'nom': 'Alice', 'age': 25, 'scores': [85, 90, 78]}, {'nom': 'Bob', 'age': 30, 'scores': [92, 88, 95]} ] }
json_str = json.dumps(data, ensure_ascii=False, indent=2) print(json_str)

Paramètres utiles de dumps :

indent=2 joliment formaté ensure_ascii=False garde les accents (sinon \u00e9 etc.) sort_keys=True trie les clés

De la str retour vers Python

parsed = json.loads(json_str) for user in parsed['utilisateurs']: avg = sum(user['scores']) / len(user['scores']) print(f"{user['nom']}: moyenne = {avg:.1f}")

Lire / écrire un fichier .json

# Écrire with open('out.json', 'w', encoding='utf-8') as f: json.dump(data, f, ensure_ascii=False, indent=2)
# Lire with open('out.json', 'r', encoding='utf-8') as f: data = json.load(f)

Gérer les types non sérialisables

json ne sait pas sérialiser : datetime, set, numpy arrays...

json.dumps(set([1,2,3])) ❌ TypeError json.dumps(list(set([1,2,3]))) ✅ json.dumps(date, default=str) ✅ convertit en str via str(date)

Pour de la doc api ou de la config, json est un standard universel. Pour des types Python plus riches (datetime, custom), pickle est plus puissant mais non portable (Python-only, et risque de sécurité si tu charges du pickle d'origine inconnue).

exercise.py

Envie d'aller plus loin ? Découvrez nos formations certifiées Bac+2 à Bac+5 →