ConsigneCré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 { } ↔ dictarray [ ] ↔ liststring ↔ strnumber ↔ int / floattrue/false ↔ True / Falsenull ↔ Nonejson.loads(s) parse une str JSON → objet Pythonjson.load(f) parse un fichier ouvertjson.dumps(obj) sérialise un objet → str JSONjson.dump(obj, f) écrit dans un fichierMnémo : le 's' à la fin = string.
import jsondata = { '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ésparsed = json.loads(json_str)for user in parsed['utilisateurs']: avg = sum(user['scores']) / len(user['scores']) print(f"{user['nom']}: moyenne = {avg:.1f}")# Écrirewith open('out.json', 'w', encoding='utf-8') as f: json.dump(data, f, ensure_ascii=False, indent=2)# Lirewith open('out.json', 'r', encoding='utf-8') as f: data = json.load(f)json ne sait pas sérialiser : datetime, set, numpy arrays...
json.dumps(set([1,2,3])) ❌ TypeErrorjson.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).
Envie d'aller plus loin ? Découvrez nos formations certifiées Bac+2 à Bac+5 →