Aller au contenu
Modules & fichiers

JSON

Le module json convertit dictionnaires et listes Python en texte JSON, et inversement. C'est le format d'échange des API web, des fichiers de configuration et des exports de nombreux outils.

  • json
  • API
  • sérialisation
  • loads
  • dumps
  • ensure_ascii

Syntaxe

Modèle
import jsonjson.loads(texte)          # texte JSON → objet Pythonjson.dumps(objet)          # objet Python → texte JSONjson.load(f)   json.dump(objet, f)   # depuis / vers un fichier ouvert

Exemple

Exemple concret
import jsonreponse = '{"eleve": "Léa", "notes": [12, 15.5], "admis": true, "remarque": null}'data = json.loads(reponse)print(data["notes"][1], data["admis"], data["remarque"])  # → 15.5 True Nonedata["moyenne"] = sum(data["notes"]) / len(data["notes"])print(json.dumps(data, ensure_ascii=False))# → {"eleve": "Léa", "notes": [12, 15.5], "admis": true, "remarque": null, "moyenne": 13.75}

À retenir

  1. Correspondances : objet ↔ dict, tableau ↔ list, true/false ↔ True/False, null ↔ None. Un tuple devient un tableau et ne revient pas en tuple.
  2. ensure_ascii=False garde les accents tels quels (Léa au lieu de L\u00e9a) et indent=2 rend le texte lisible par un humain.
  3. Pour un fichier : with open("data.json", encoding="utf-8") as f: data = json.load(f).
  4. Piège : JSON n'a ni date ni Decimal, et json.dumps lève TypeError sur une date. Convertissez-la avant (d.isoformat()) ou passez default=str.
  5. Piège : les clés d'un objet JSON sont toujours des chaînes. Le dictionnaire {1: "a"} relu après dumps puis loads devient {"1": "a"}.

Voir aussi