Qu'est-ce que JSON et pourquoi le parser ?
JSON (JavaScript Object Notation) est un format textuel léger d'échange de données, devenu un standard pour la transmission d'informations entre applications. Malgré son nom, JSON n'est pas lié à JavaScript et est largement utilisé dans tous les langages de programmation modernes.
Les principaux avantages de JSON :
- Format lisible par l'humain
- Structure de données simple
- Support universel
- Compacité par rapport au XML
Exemple d'objet JSON :
{
"name": "Alice",
"age": 30,
"is_active": true,
"hobbies": ["reading", "cycling", "traveling"]
}
Le module json intégré en Python
Python propose un module intégré puissant, json, pour travailler avec des données JSON. Ce module permet deux opérations principales :
- La désérialisation — conversion d'une chaîne JSON en objets Python
- La sérialisation — conversion d'objets Python en chaîne JSON
Pour commencer, importez le module :
import json
Parser une chaîne JSON en objets Python
Utilisation de json.loads()
La fonction json.loads() (load string) convertit une chaîne JSON en un objet Python correspondant :
import json
json_data = '{"name": "Bob", "age": 25, "is_active": false}'
parsed_data = json.loads(json_data)
print(parsed_data) # {'name': 'Bob', 'age': 25, 'is_active': False}
print(type(parsed_data)) # <class 'dict'>
Après le parsing, vous pouvez manipuler les données comme un dictionnaire classique :
print(parsed_data['name']) # Bob
print(parsed_data['age']) # 25
Correspondance des types de données
Les types JSON sont automatiquement convertis en types Python :
| JSON | Python |
|---|---|
| object | dict |
| array | list |
| string | str |
| number | int/float |
| true/false | True/False |
| null | None |
Convertir des objets Python en JSON
Utilisation de json.dumps()
La fonction json.dumps() convertit des objets Python en chaîne JSON :
data = {'name': 'Alice', 'age': 30, 'is_active': True}
json_string = json.dumps(data)
print(json_string) # {"name": "Alice", "age": 30, "is_active": true}
Paramètres de formatage
Pour améliorer la lisibilité, utilisez des paramètres supplémentaires :
data = {'name': 'Alice', 'age': 30, 'city': 'Paris'}
json_pretty = json.dumps(data, indent=4, sort_keys=True, ensure_ascii=False)
print(json_pretty)
Les principaux paramètres :
indent— indentation pour le formatagesort_keys— tri des clésensure_ascii— prise en charge des caractères Unicode
Travailler avec des fichiers JSON
Lire un fichier JSON
Utilisez json.load() pour lire des données JSON depuis un fichier :
with open('data.json', 'r', encoding='utf-8') as file:
content = json.load(file)
print(content)
Écrire du JSON dans un fichier
La fonction json.dump() écrit des données dans un fichier :
data = {'city': 'Paris', 'temperature': 15, 'weather': 'ensoleillé'}
with open('weather.json', 'w', encoding='utf-8') as file:
json.dump(data, file, indent=4, ensure_ascii=False)
Bonnes pratiques pour les fichiers
- Toujours spécifier l'encodage