Accéder au contenu principal

Données JSON Python : Un guide illustré d'exemples

Apprenez à utiliser JSON en Python, notamment la sérialisation, la désérialisation, le formatage, l'optimisation des performances, la gestion des API, ainsi que les limites et les alternatives de JSON.
Actualisé 29 août 2025  · 6 min de lecture

JSON (JavaScript Object Notation) est un format d'échange de données léger qui est devenu un choix populaire pour l'échange de données dans de nombreux langages de programmation, y compris Python. Grâce à sa syntaxe simple et à sa capacité à représenter des structures de données complexes, JSON est devenu un élément essentiel du développement web moderne, alimentant tout, des API aux applications web côté client. 

Dans ce tutoriel, nous explorerons les principes fondamentaux de l'utilisation de JSON en Python, notamment la sérialisation, la désérialisation, la lecture et l'écriture de fichiers JSON, le formatage, et bien plus encore. À la fin de ce tutoriel, vous serez en mesure de :

  • Comprendre JSON ainsi que ses avantages et inconvénients
  • Identifiez les cas d'utilisation de JSON et comparez-le aux alternatives courantes.
  • Sérialiser et désérialiser efficacement des données JSON en Python
  • Travailler avec des données JSON dans le langage de programmation Python
  • Formater des données JSON en Python à l'aide de la bibliothèque `json`
  • Optimiser les performances lors du traitement de données json
  • Gérer les données JSON dans le développement d'API.

Qu'est-ce que JSON ?

JSON (JavaScript Object Notation) est un format d'échange de données léger et indépendant du langage, largement adopté et pris en charge par de nombreux langages et frameworks de programmation. Il s'agit d'un choix approprié pour l'échange de données lorsqu'un format simple et facile à lire est requis, qui prend en charge des structures de données complexes et peut être facilement partagé entre différents programmes informatiques.

L'utilisation idéale du format JSON se présente lorsqu'il est nécessaire d'échanger des données entre des applications Web, par exemple lorsque vous remplissez un formulaire sur un site Web et que les informations sont transmises à un serveur pour traitement. 

Le format JSON est idéal dans ce contexte, car il est léger et efficace, nécessitant moins de bande passante et d'espace de stockage que d'autres formats tels que XML. De plus, JSON prend en charge des structures de données complexes telles que les objets imbriqués et les tableaux, ce qui facilite la représentation et l'échange de données structurées entre différents systèmes. Voici quelques autres cas d'utilisation du format JSON :

  1. Interfaces de programmation d'applications (API). Le format JSON est couramment utilisé pour créer des API (interfaces de programmation d'applications) qui permettent à différents systèmes et applications de communiquer entre eux. Par exemple, de nombreuses API Web utilisent JSON comme format de données pour échanger des données entre différentes applications, ce qui facilite l'intégration avec différents langages de programmation et différentes plateformes.
  2. Fichiers de configuration. JSON offre un format simple et facile à lire pour stocker et récupérer des données de configuration. Cela peut inclure les paramètres de l'application, tels que la disposition de l'interface utilisateur ou les préférences de l'utilisateur.
  3. IoT (Internet des objets).  Les appareils IoT génèrent souvent de grandes quantités de données, qui peuvent être stockées et transmises plus efficacement entre les capteurs et d'autres appareils à l'aide du format JSON. 

Processus de requête JSON

Exemple de données JSON

python_obj = {
  "name": "John Doe",
  "age": 30,
  "email": "john.doe@example.com",
  "is_employee": True,
  "hobbies": [
    "reading",
    "playing soccer",
    "traveling"
  ],
  "address": {
    "street": "123 Main Street",
    "city": "New York",
    "state": "NY",
    "zip": "10001"
  }
}

print(python_obj)

Dans cet exemple, nous avons un objet JSON qui représente une personne. L'objet possède plusieurs propriétés : nom, âge, adresse e-mail et est_employé. La propriété hobbies est un tableau qui contient trois chaînes de caractères. La propriété « address » est un objet comportant plusieurs propriétés telles que « street », « city », « state » et « zip ».

Veuillez noter que les données JSON sont généralement formatées sous la forme d'une série de paires clé-valeur, la clé étant représentée par une chaîne de caractères et la valeur par différents types tels que chaîne de caractères, nombre, booléen, tableau ou objet.

Avantages et inconvénients de l'utilisation de JSON

Ci-dessous, nous avons sélectionné certains des avantages et inconvénients liés à l'utilisation de JSON. 

Avantages de travailler avec un fichier JSON :

Parmi les principaux avantages du format JSON, on peut citer le fait qu'il est :

  1. Léger et facile à lire. Les fichiers JSON sont faciles à lire et à comprendre, même pour les utilisateurs non techniciens. Ils sont également légers, ce qui signifie qu'ils peuvent être facilement transmis sur Internet.
  2. Interopérable : Les fichiers JSON sont interopérables, ce qui signifie qu'ils peuvent être facilement échangés entre différents systèmes et plateformes. En effet, JSON est un format standard largement pris en charge, et de nombreuses applications et services utilisent JSON pour l'échange de données. Par conséquent, l'utilisation de fichiers JSON peut faciliter l'intégration de différentes parties d'un système ou le partage de données entre différentes applications.
  3. Facile à valider : Les fichiers JSON peuvent être facilement validés par rapport à un schéma afin de garantir leur conformité à une structure ou à un ensemble de règles spécifiques. Cela peut contribuer à détecter rapidement les erreurs et les incohérences dans les données, ce qui permet de gagner du temps et d'éviter des problèmes ultérieurs. Les schémas JSON peuvent également être utilisés pour générer automatiquement de la documentation pour les données stockées dans le fichier JSON.

Inconvénients liés à l'utilisation d'un fichier JSON :

  1. Prise en charge limitée des structures de données complexes : Bien que les fichiers JSON prennent en charge un large éventail de types de données, ils ne sont pas adaptés au stockage de structures de données complexes telles que les graphes ou les arborescences. Cela peut compliquer le traitement de certains types de données à l'aide de fichiers JSON.
  2. Aucune application de schéma : Les fichiers JSON n'imposent aucun schéma, ce qui signifie qu'il est possible de stocker des données incohérentes ou non valides dans un fichier JSON. Cela peut entraîner des erreurs et des bogues dans les applications qui dépendent des données contenues dans le fichier.
  3. Capacités de recherche et d'indexation restreintes : Les fichiers JSON n'offrent pas le même niveau de capacités de requête et d'indexation que les bases de données traditionnelles. Cela peut compliquer la réalisation de recherches complexes ou la récupération de sous-ensembles spécifiques de données à partir d'un fichier JSON volumineux.

Principales alternatives à JSON pour un échange de données efficace


Il existe plusieurs alternatives au format JSON pouvant être utilisées pour l'échange ou le stockage de données, chacune présentant ses propres avantages et inconvénients. Certaines des alternatives populaires à JSON sont :

  1. XML (Langage de balisage extensible). XML est un langage de balisage qui utilise des balises pour définir des éléments et des attributs afin de décrire les données. Il s'agit d'un format plus détaillé que JSON, mais il offre une prise en charge solide de la validation des schémas et de la structure des documents.
  2. YAML (Yet Another Markup Language). YAML est un format de sérialisation de données lisible par l'homme, conçu pour être facile à lire et à écrire. Il s'agit d'un format plus concis que XML et il prend en charge les types de données complexes et les commentaires.
  3. MessagePack. MessagePack est un format de sérialisation binaire conçu pour être plus compact et efficace que JSON. Il prend en charge les types de données complexes et est particulièrement adapté au transfert de données sur des réseaux à faible bande passante.
  4. Protocole Buffers. Protocol Buffers est un format de sérialisation binaire développé par Google. Il est conçu pour être hautement efficace et offre une prise en charge solide de la validation des schémas, ce qui le rend idéal pour les systèmes distribués à grande échelle.
  5. BSON (JSON binaire). BSON est un format de sérialisation binaire qui étend le format JSON avec des types de données supplémentaires et des optimisations pour plus d'efficacité. Il est conçu pour un stockage et un transfert efficaces des données dans les bases de données MongoDB.

Le choix du format d'échange de données dépend du cas d'utilisation spécifique et des exigences de l'application. JSON reste un choix populaire en raison de sa simplicité, de sa polyvalence et de sa large adoption, mais d'autres formats tels que XML, YAML, MessagePack, Protocol Buffers et BSON peuvent être plus adaptés à certains cas d'utilisation.

Bibliothèques Python pour travailler avec des données JSON

Il existe plusieurs paquets Python populaires que vous pouvez utiliser pour travailler avec des fichiers JSON :

  1. json. Il s'agit d'un package Python intégré qui fournit des méthodes pour encoder et décoder des données JSON.
  2. simplejson. Ce package fournit un encodeur et un décodeur JSON rapides prenant en charge les types spécifiques à Python.
  3. ujson. Ce package est un encodeur et décodeur JSON ultra-rapide pour Python.
  4. jsonschema. Ce package permet de valider des données JSON par rapport à un schéma spécifié.

Sérialisation et désérialisation JSON

La sérialisation et la désérialisation JSON sont les processus qui consistent à convertir des données JSON vers et à partir d'autres formats, tels que des objets Python ou des chaînes de caractères, afin de transmettre ou de stocker les données.

La sérialisation est le processus qui consiste à convertir un objet ou une structure de données en une chaîne JSON. Ce processus est nécessaire afin de transmettre ou de stocker les données dans un format lisible par d'autres systèmes ou programmes. La sérialisation JSON est une technique couramment utilisée dans le développement web, où les données sont fréquemment transmises entre différents systèmes ou applications.

La désérialisation, quant à elle, est le processus qui consiste à reconvertir une chaîne JSON en un objet ou une structure de données. Ce processus est indispensable pour pouvoir utiliser les données dans un programme ou un système. La désérialisation JSON est fréquemment utilisée dans le développement web pour analyser les données reçues d'une API ou d'une autre source.

La sérialisation et la désérialisation JSON sont des techniques importantes pour travailler avec des données JSON dans divers contextes, du développement web à l'analyse de données et au-delà. De nombreux langages de programmation fournissent des bibliothèques ou des paquets intégrés pour faciliter et optimiser la sérialisation et la désérialisation.

Voici quelques fonctions courantes de la bibliothèque json utilisées pour la sérialisation et la désérialisation.

1. json.dumps()

Cette fonction est utilisée pour sérialiser un objet Python en une chaîne JSON. La fonction dumps() prend un seul argument, l'objet Python, et renvoie une chaîne JSON. Voici un exemple :

import json

# Python object to JSON string
python_obj = {'name': 'John', 'age': 30}

json_string = json.dumps(python_obj)
print(json_string)  

# Expected output: {"name": "John", "age": 30}

2. json.loads()

Cette fonction est utilisée pour analyser une chaîne JSON en un objet Python. La fonction loads() accepte un seul argument, la chaîne JSON, et renvoie un objet Python. Voici un exemple : 

import json

# JSON string to Python object
json_string = '{"name": "John", "age": 30}'

python_obj = json.loads(json_string)

print(python_obj)  

# Expected output: {'name': 'John', 'age': 30}

3. json.dump()

Cette fonction est utilisée pour sérialiser un objet Python et l'écrire dans un fichier JSON. La fonction dump() prend deux arguments : l'objet Python et l'objet fichier. Voici un exemple :

import json

# serialize Python object and write to JSON file
python_obj = {'name': 'John', 'age': 30}
with open('data.json', 'w') as file:
    json.dump(python_obj, file)

# No expected output

4. json.load()

Cette fonction est utilisée pour lire un fichier JSON et analyser son contenu dans un objet Python. La fonction load() prend un seul argument, l'objet fichier, et renvoie un objet Python. Voici un exemple :

import json

# read JSON file and parse contents
with open('data.json', 'r') as file:
    python_obj = json.load(file)
print(python_obj)  

# Expected output: {'name': 'John', 'age': 30}

Python et JSON ont des types de données différents, Python offrant une gamme plus large de types de données que JSON. Alors que Python est capable de stocker des structures de données complexes telles que des ensembles et des dictionnaires, JSON se limite au traitement des chaînes de caractères, des nombres, des booléens, des tableaux et des objets. Examinons quelques-unes des différences :

Python

JSON

dict

Objet

list

Tableau

tuple

Tableau

str

Chaîne

int

Numéro

flottant

Numéro

Vrai

true

Faux

false

Aucun

Veuillez noter que le contenu suivant est fourni

Liste Python vers JSON

Pour convertir une liste Python au format JSON, vous pouvez utiliser la méthode json.dumps() de la bibliothèque json.

import json

my_list = [1, 2, 3, "four", "five"]

json_string = json.dumps(my_list)

print(json_string)

# Expected output: [1, 2, 3, "four", "five"]

Dans cet exemple, nous avons une liste appelée my_list contenant un mélange d'entiers et de chaînes de caractères. Nous utilisons ensuite la méthode json.dumps() pour convertir la liste en une chaîne au format JSON, que nous stockons dans la variable json_string.

Formatage des données JSON

En Python, la fonction json.dumps() offre des options pour formater et ordonner la sortie JSON. Voici quelques options courantes :

1. Retrait

Cette option spécifie le nombre d'espaces à utiliser pour l'indentation dans la chaîne JSON de sortie. Par exemple :

import json

data = {
    "name": "John",
    "age": 30,
    "city": "New York"
}

json_data = json.dumps(data, indent=2)

print(json_data)

# Expected output: a JSON formatted string with an indentation of 2 spaces for each level of nesting:
# {
#   "name": "John",
#   "age": 30,
#   "city": "New York"
# }

2. Sort_keys

Cette option indique si les clés de la chaîne JSON de sortie doivent être triées par ordre alphabétique. Par exemple :

import json

data = {
    "name": "John",
    "age": 30,
    "city": "New York"
}

json_data = json.dumps(data, sort_keys=True)

print(json_data)

# Expected output: {"age": 30, "city": "New York", "name": "John"}

3. Séparateurs

Cette option vous permet de spécifier les séparateurs utilisés dans la chaîne JSON de sortie. Le paramètre separators accepte un tuple de deux chaînes, où la première chaîne est le séparateur entre les paires clé-valeur des objets JSON, et la seconde chaîne est le séparateur entre les éléments des tableaux JSON. Par exemple :

import json

data = {
    "name": "John",
    "age": 30,
    "city": "New York"
}

json_data = json.dumps(data, separators=(",", ":"))

print(json_data)

# Expected output: a JSON formatted string with a comma separator between key-value pairs and a colon separator between keys and values:
# {"name":"John","age":30,"city":"New York"}

Exemple Python - Données JSON dans les API

import requests
import json

url = "https://jsonplaceholder.typicode.com/posts"
response = requests.get(url)

if response.status_code == 200:
    data = json.loads(response.text)
    print(data)
else:
    print(f"Error retrieving data, status code: {response.status_code}")

# Expected output: a JSON object as the response of the request

SORTIE FORMATÉE :

Données de sortie

Ce code utilise les bibliothèques Python requests et json pour envoyer une requête à l'URL "https://jsonplaceholder.typicode.com/posts" et récupérer des données. La ligne requests.get(url) effectue la requête et stocke la réponse dans la variable response.

La ligne if response.status_code == 200: vérifie si le code de réponse est 200, ce qui signifie que la requête a abouti. Si la requête aboutit, le code charge ensuite le texte de réponse dans un dictionnaire Python à l'aide de la méthode json.loads() et le stocke dans la variable data.


Si vous souhaitez en savoir plus sur ce sujet, veuillez consulter notre tutoriel sur les API Web, requêtes Python et exécution d'une requête HTTP en Python.

Optimisation des performances JSON en Python

Lorsque vous travaillez avec de grandes quantités de données JSON dans Python, il est essentiel d'optimiser les performances de votre code afin de garantir son bon fonctionnement. Voici quelques conseils pour optimiser les performances JSON en Python :

  1. Veuillez utiliser les bibliothèques cjson ou ujson. Ces bibliothèques sont plus rapides que la bibliothèque JSON standard de Python et peuvent améliorer considérablement les performances de sérialisation et de désérialisation JSON.
  2. Veuillez éviter les conversions inutiles. La conversion entre les objets Python et les données JSON peut être coûteuse en termes de performances. Dans la mesure du possible, veuillez essayer de travailler directement avec les données JSON et éviter les conversions inutiles.
  3. Veuillez utiliser des générateurs pour les données JSON volumineuses. Lorsque vous travaillez avec de grandes quantités de données JSON, l'utilisation de générateurs peut contribuer à réduire l'utilisation de la mémoire et à améliorer les performances.
  4. Réduisez au minimum la charge réseau. Lors de la transmission de données JSON sur un réseau, la réduction de la quantité de données transférées peut améliorer les performances. Veuillez utiliser des techniques de compression telles que gzip afin de réduire la taille des données JSON avant de les transmettre sur un réseau.
  5. Veuillez utiliser la mise en cache. Si vous accédez fréquemment aux mêmes données JSON, la mise en cache des données peut améliorer les performances en réduisant le nombre de requêtes nécessaires pour charger les données.
  6. Optimiser la structure des données : La structure des données JSON peut également avoir un impact sur les performances. L'utilisation d'une structure de données plus simple et plus plate peut améliorer les performances par rapport à une structure complexe et imbriquée.

Limites du format JSON

Bien que JSON soit un format populaire pour l'échange de données dans de nombreuses applications, il existe certaines limitations de mise en œuvre dont il convient de tenir compte :

  1. Absence de prise en charge de certains types de données. JSON offre une prise en charge limitée de certains types de données, tels que les données binaires, les dates et les heures. Bien qu'il existe des solutions pour représenter ces types en JSON, cela peut compliquer la sérialisation et la désérialisation.
  2. Absence de prise en charge des commentaires. Contrairement à d'autres formats, tels que YAML et XML, JSON ne prend pas en charge les commentaires. Cela peut compliquer l'ajout de commentaires aux données JSON afin de fournir un contexte ou une documentation.
  3. Flexibilité limitée pour les extensions. Bien que JSON prenne en charge les extensions via des propriétés personnalisées ou la propriété $schema, ce format n'offre pas autant de flexibilité pour les extensions que d'autres formats, tels que XML ou YAML.
  4. Aucune norme n'est en vigueur pour préserver l'ordre des clés. JSON ne dispose pas d'une méthode standard pour conserver l'ordre des clés dans un objet, ce qui complique la comparaison ou la fusion d'objets JSON.
  5. Prise en charge limitée des références circulaires. JSON offre une prise en charge limitée des références circulaires, où un objet renvoie à lui-même. Cela peut compliquer la représentation de certaines structures de données en JSON.

Il est essentiel de prendre en compte ces contraintes de mise en œuvre lorsque vous travaillez avec des données JSON afin de vous assurer que le format est adapté à vos besoins et d'éviter d'éventuels problèmes liés à la sérialisation, à la désérialisation et à la représentation des données.

Conclusion

JSON est un format polyvalent et largement utilisé pour l'échange de données dans le développement web moderne, et Python fournit un ensemble puissant d'outils pour travailler avec les données JSON. Que vous développiez une API ou travailliez avec des applications web côté client, la compréhension des bases de JSON en Python est une compétence essentielle pour tout développeur moderne. En maîtrisant les techniques décrites dans ce tutoriel, vous serez en mesure de travailler avec des données JSON dans Python et de créer des applications robustes et évolutives qui exploitent la puissance de ce format d'échange de données performant.

Si vous souhaitez apprendre à créer des pipelines pour importer des données conservées dans des formats de stockage courants, veuillez consulter notre cours Streamlined Data Ingestion with pandas. Vous utiliserez pandas, une bibliothèque majeure de Python pour l'analyse, afin d'obtenir des données provenant de diverses sources, notamment un tableur contenant les réponses à un sondage, une base de données de demandes de services publics et une API pour un site d'avis populaire. 

Foire aux questions

Comment puis-je gérer les fichiers JSON trop volumineux pour tenir en mémoire ?

Pour travailler avec des fichiers JSON volumineux qui ne peuvent pas être chargés en mémoire, il est possible de traiter les données de manière incrémentielle à l'aide de la bibliothèque ijson de Python ou de lire le fichier ligne par ligne si le JSON est structuré comme une série d'objets plus petits. Par exemple :

import ijson

with open('large_file.json', 'r') as file:
    for item in ijson.items(file, 'item'):
        print(item)  # Process each JSON item individually

Comment fusionner deux objets JSON en Python ?

Vous pouvez fusionner deux objets JSON en les désérialisant d'abord dans des dictionnaires Python, puis en mettant à jour un dictionnaire avec le contenu de l'autre :

import json

json1 = '{"name": "Alice", "age": 25}'
json2 = '{"city": "New York", "hobbies": ["reading", "cycling"]}'

dict1 = json.loads(json1)
dict2 = json.loads(json2)

dict1.update(dict2)
merged_json = json.dumps(dict1)

print(merged_json)
# Output: {"name": "Alice", "age": 25, "city": "New York", "hobbies": ["reading", "cycling"]}

Les données JSON peuvent-elles inclure des commentaires, et comment puis-je les traiter dans Python ?

JSON ne prend pas en charge les commentaires de manière native, mais si vous travaillez avec un fichier JSON non standard qui contient des commentaires (par exemple, utilisant // ou /* */), vous pouvez pré-traiter le fichier afin de les supprimer avant l'analyse. Voici un exemple :

import json
import re

with open('file_with_comments.json', 'r') as file:
    content = file.read()

# Remove comments
content = re.sub(r'//.*?$|/\*.*?\*/', '', content, flags=re.DOTALL | re.MULTILINE)

data = json.loads(content)
print(data)

Moez Ali's photo
Author
Moez Ali
LinkedIn
Twitter

Scientifique de données, fondateur et créateur de PyCaret

Sujets

En savoir plus sur Python

Cours

Introduction to Databases in Python

4 h
99.7K
In this course, you'll learn the basics of relational databases and how to interact with them.
Afficher les détailsRight Arrow
Commencer le cours
Voir plusRight Arrow
Apparenté

Didacticiel

Comment diviser des listes en Python : Exemples de base et méthodes avancées

Apprenez à diviser des listes Python à l'aide de techniques telles que le découpage, les compréhensions de listes et itertools. Veuillez découvrir quand utiliser chaque méthode pour une gestion optimale des données.
Allan Ouko's photo

Allan Ouko

Didacticiel

Méthode index() de Python expliquée à l'aide d'exemples

Découvrez comment utiliser la fonction index() de Python pour trouver la position d'éléments dans des listes.
Sejal Jaiswal's photo

Sejal Jaiswal

Didacticiel

Python Switch Case Statement : Guide du débutant

Découvrez le match-case de Python : un guide sur sa syntaxe, ses applications en data science, ML, et une analyse comparative avec le switch-case traditionnel.
Matt Crabtree's photo

Matt Crabtree

Didacticiel

Instructions IF, ELIF et ELSE en Python

Dans ce tutoriel, vous apprendrez exclusivement les instructions if else en Python.
Sejal Jaiswal's photo

Sejal Jaiswal

Didacticiel

Tutoriel sur les méthodes .append() et .extend() de Python

Apprenez à utiliser les méthodes .append() et .extend() pour ajouter des éléments à une liste.
DataCamp Team's photo

DataCamp Team

Didacticiel

if…elif…else dans le tutoriel Python

Découvrez comment créer des instructions if…elif…else en Python.
DataCamp Team's photo

DataCamp Team

Voir plusVoir plus