Analyse Python JSON : sérialisation et désérialisation

Apprenez à lire, écrire et analyser des données JSON en Python. Maîtrisez json.loads, json.dumps et personnalisez les encodeurs/décodeurs JSON.

Essayez dans l'éditeur

Aperçu

JSON (JavaScript Object Notation) est le format léger d'échange de données qui domine les API Web, les configurations et les charges utiles de bases de données modernes. Étant donné que les structures JSON ressemblent à des dictionnaires et à des listes Python, la traduction entre eux est incroyablement transparente. Python est équipé d'un module « json » intégré, ce qui facilite l'analyse des chaînes JSON en objets Python et la reconversion des objets Python en chaînes JSON.

Le processus de traduction d'un objet Python (comme un dictionnaire) en une chaîne JSON brute est appelé sérialisation ou encodage. Ceci est géré par `json.dumps()` (pour les chaînes) et `json.dump()` (pour écrire directement dans un fichier). Vous pouvez contrôler les paramètres de formatage tels que « indent » pour embellir le JSON, ou « sort_keys » pour conserver les attributs classés par ordre alphabétique. À l'inverse, l'analyse d'une chaîne JSON dans un dictionnaire Python est appelée désérialisation, exécutée via `json.loads()` et `json.load()`.

Alors que les types Python standard tels que les chaînes, les nombres, les listes et les dictionnaires sont automatiquement sérialisés en JSON, ce n'est pas le cas des objets personnalisés (comme les classes ou les objets datetime). Tenter d'encoder directement un objet personnalisé générera une `TypeError`. Pour surmonter ce problème, les développeurs doivent créer une classe d'encodeur personnalisée qui hérite de « json.JSONEncoder » et remplacer la méthode « .default() » pour sérialiser les classes dans des dictionnaires lisibles. La maîtrise de la manipulation JSON est essentielle pour communiquer avec les services Web externes.

Sortie de code et d'exécution

Conversion d'un dictionnaire en chaîne JSON et analyse de celui-ci à l'aide de la bibliothèque json intégrée.

import json

# Python Dictionary representing a user profile
user_profile = {
    "name": "Alex",
    "is_premium": True,
    "skills": ["Python", "Docker"],
    "age": 28
}

# Serialize dictionary to JSON string
json_string = json.dumps(user_profile, indent=2)
print("--- JSON String ---")
print(json_string)

# Deserialize JSON string back to dictionary
parsed_dict = json.loads(json_string)
print("\n--- Parsed Python Dictionary ---")
print(f"Name: {parsed_dict['name']}")
print(f"First Skill: {parsed_dict['skills'][0]}")
Sortie terminale
--- JSON String ---
{
  "name": "Alex",
  "is_premium": true,
  "skills": [
    "Python",
    "Docker"
  ],
  "age": 28
}

--- Parsed Python Dictionary ---
Name: Alex
First Skill: Python

Mise en œuvre étape par étape

  • Envoi de charges utiles et lecture de données à partir des API REST
  • Stockage des préférences de configuration dans les fichiers settings.json
  • Transmission de charges utiles structurées entre microservices

Foire aux questions

Quelle est la différence entre json.dump et json.dumps ?

json.dump (sans le « s ») écrit les données JSON directement dans un flux de fichiers. json.dumps (avec le « s ») sérialise les données dans une variable de chaîne Python.

Comment gérez-vous les erreurs de décodage JSON ?

Enveloppez votre code d'analyse dans un bloc try/sauf capturant 'json.JSONDecodeError' pour gérer avec élégance les chaînes JSON mal formées.

Sujets connexes

Ressources Python recommandées

Développez vos connaissances avec des didacticiels interactifs, des aide-mémoire et des comparaisons de codes associés.