logo oujood
🔍

Lire et écrire des fichiers JSON en Python

JSON est le format d'échange de données le plus utilisé sur le web. Python intègre un module json complet pour le lire, l'écrire et le manipuler sans installation.

OUJOOD.COM

JSON (JavaScript Object Notation) est le format texte le plus utilisé pour échanger des données sur le web. Les APIs retournent du JSON, les fichiers de configuration l'utilisent, les bases de données NoSQL le stockent. Sa syntaxe ressemble aux dictionnaires Python — ce n'est pas un hasard, les deux structures partagent la même logique clé/valeur.

Python intègre un module json dans sa bibliothèque standard. Pas d'installation nécessaire. Ce cours vous montre comment lire un fichier JSON, comment en écrire un, et comment convertir des données Python en JSON et inversement.

Correspondance JSON ↔ Python

Avant de coder, voici comment les types JSON correspondent aux types Python :

JSONPythonExemple JSON
objectdict{"nom": "Alice"}
arraylist[1, 2, 3]
stringstr"bonjour"
numberint / float42 / 3.14
true / falseTrue / Falsetrue
nullNonenull

Lire un fichier JSON : json.load()

json.load() lit un fichier JSON et le convertit directement en objet Python (dictionnaire, liste, etc.). C'est la fonction à utiliser quand les données sont dans un fichier sur le disque.

  📋 Copier le code

# Contenu du fichier utilisateur.json :
# {
#   "nom": "Alice",
#   "age": 30,
#   "langages": ["Python", "JavaScript"],
#   "actif": true
# }

import json

with open("utilisateur.json", "r", encoding="utf-8") as f:
    utilisateur = json.load(f)

print(utilisateur["nom"])
# Résultat : Alice

print(utilisateur["langages"])
# Résultat : ['Python', 'JavaScript']

print(type(utilisateur))
# Résultat : <class 'dict'>

Écrire un fichier JSON : json.dump()

json.dump() convertit un objet Python en JSON et l'écrit dans un fichier. Le paramètre indent formate le JSON avec une indentation lisible — sans lui, tout s'écrit sur une seule ligne.

  📋 Copier le code

import json

utilisateur = {
    "nom": "Bob",
    "age": 25,
    "langages": ["Python", "PHP"],
    "actif": True
}

with open("utilisateur.json", "w", encoding="utf-8") as f:
    json.dump(utilisateur, f, indent=4, ensure_ascii=False)

print("Fichier JSON écrit.")

Le paramètre ensure_ascii=False est important : sans lui, les caractères accentués comme é ou ç sont convertis en séquences d'échappement Unicode (\u00e9). Avec ensure_ascii=False, ils restent lisibles directement dans le fichier.

Convertir une chaîne JSON : json.loads() et json.dumps()

json.loads() (avec un s pour string) convertit une chaîne de caractères JSON en objet Python. json.dumps() fait l'inverse. Ces deux fonctions s'utilisent quand les données viennent d'une API, d'une base de données ou de toute autre source qui retourne du texte brut plutôt qu'un fichier.

  📋 Copier le code

import json

# json.loads() → chaîne JSON vers objet Python
chaine_json = '{"ville": "Paris", "population": 2161000}'
donnees = json.loads(chaine_json)
print(donnees["ville"])
# Résultat : Paris

# json.dumps() → objet Python vers chaîne JSON
produit = {"nom": "Clavier", "prix": 49.99, "stock": True}
chaine = json.dumps(produit, indent=2, ensure_ascii=False)
print(chaine)
# Résultat :
# {
#   "nom": "Clavier",
#   "prix": 49.99,
#   "stock": true
# }

Lire un JSON contenant une liste

Un fichier JSON peut contenir directement un tableau (liste en Python). C'est courant pour des exports de données : une liste d'utilisateurs, de produits, de transactions.

  📋 Copier le code

import json
from pathlib import Path

# Créer un fichier JSON avec une liste
eleves = [
    {"nom": "Alice", "note": 17},
    {"nom": "Bob", "note": 12},
    {"nom": "Claire", "note": 15}
]
Path("eleves.json").write_text(
    json.dumps(eleves, indent=2, ensure_ascii=False),
    encoding="utf-8"
)

# Lire et parcourir la liste
with open("eleves.json", "r", encoding="utf-8") as f:
    liste = json.load(f)

for eleve in liste:
    print(f"{eleve['nom']} : {eleve['note']}/20")

# Résultat :
# Alice : 17/20
# Bob : 12/20
# Claire : 15/20

Mettre à jour un fichier JSON

Pour modifier un fichier JSON : lisez-le, modifiez l'objet Python en mémoire, puis réécrivez-le. Python ne peut pas modifier un JSON directement sur le disque sans le charger.

  📋 Copier le code

import json

# Étape 1 : lire le fichier existant
with open("utilisateur.json", "r", encoding="utf-8") as f:
    utilisateur = json.load(f)

# Étape 2 : modifier en mémoire
utilisateur["age"] += 1
utilisateur["langages"].append("TypeScript")

# Étape 3 : réécrire le fichier
with open("utilisateur.json", "w", encoding="utf-8") as f:
    json.dump(utilisateur, f, indent=4, ensure_ascii=False)

print("Fichier mis à jour.")

Gérer les erreurs JSON

Si le JSON est mal formé — une virgule en trop, des guillemets simples au lieu de doubles — json.loads() et json.load() lèvent une json.JSONDecodeError. Intercéptez-la pour éviter que votre programme plante.

  📋 Copier le code

import json

chaine_invalide = "{'clé': 'valeur'}"
# JSON invalide : guillemets simples non autorisés en JSON

try:
    donnees = json.loads(chaine_invalide)
except json.JSONDecodeError as e:
    print(f"JSON invalide : {e}")
# Résultat : JSON invalide : Expecting property name enclosed in double quotes...

Récapitulatif des quatre fonctions essentielles

FonctionSourceRésultatUsage typique
json.load(f)Fichier ouvertObjet PythonLire un fichier .json
json.dump(obj, f)Objet PythonFichier JSONÉcrire un fichier .json
json.loads(s)Chaîne JSONObjet PythonRéponse d'une API
json.dumps(obj)Objet PythonChaîne JSONPréparer une requête API

Par carabde | Mis à jour le 21 avril 2026