cours
Données JSON en Python
Introduction
JSON (JavaScript Object Notation) est un format d'échange de données léger qui s'est imposé dans de nombreux langages de programmation, dont Python. Grâce à sa syntaxe simple et à sa capacité à représenter des structures de données complexes, JSON est devenu une partie intégrante du développement web moderne, alimentant tout, des API aux applications web côté client.
Dans ce tutoriel, nous allons explorer les bases du travail avec JSON en Python, notamment la sérialisation, la désérialisation, la lecture et l'écriture de fichiers JSON, le formatage, et plus encore. À la fin de ce tutoriel, les lecteurs pourront :
- Comprendre JSON et ses avantages et inconvénients
- Identifier les cas d'utilisation de JSON et le comparer à d'autres solutions 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.
- Formatez des données JSON en Python en utilisant la bibliothèque `json`.
- Optimisez les performances lorsque vous travaillez avec des données json
- Gérer les données JSON dans le cadre du développement d'API.
Qu'est-ce que JSON ?
JSON (JavaScript Object Notation) est un format d'échange de données léger, indépendant du langage, largement adopté et pris en charge par de nombreux langages et cadres de programmation. C'est un bon choix pour l'échange de données lorsque l'on a besoin d'un format simple, facile à lire, qui supporte des structures de données complexes et qui peut être facilement partagé entre différents programmes informatiques.
Le cas d'utilisation idéal de JSON est celui où 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 envoyées à un serveur pour y être traitées.
JSON est idéal pour ce scénario car c'est un format léger et efficace qui nécessite moins de bande passante et d'espace de stockage que d'autres formats comme XML. En outre, 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 :
- Interface de programmation d'applications (API). 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 basées sur le web utilisent JSON comme format de données pour l'échange de données entre différentes applications, ce qui facilite l'intégration avec différents langages de programmation et plateformes.
- Fichiers de configuration. JSON est un format simple et facile à lire pour stocker et récupérer des données de configuration. Il peut s'agir de paramètres de l'application, tels que la présentation d'une interface utilisateur ou les préférences de l'utilisateur.
- 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 entre des capteurs et d'autres appareils de manière plus efficace grâce à JSON.
Exemple de données JSON
{
"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"
}
}
Dans cet exemple, nous avons un objet JSON qui représente une personne. L'objet possède plusieurs propriétés : le nom, l'âge, l'adresse électronique et le statut d'employé. La propriété hobbies est un tableau qui contient trois chaînes de caractères. La propriété adresse est un objet qui possède plusieurs propriétés propres telles que la rue, la ville, l'état et l'adresse postale.
Notez 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 et la valeur par différents types tels que chaîne, nombre, booléen, tableau ou objet.
Avantages et inconvénients de l'utilisation de JSON
Nous avons relevé ci-dessous quelques-uns des aspects positifs et négatifs de l'utilisation de JSON.
Avantages de travailler avec un fichier JSON :
Parmi les principaux avantages de JSON, on peut citer le fait qu'il est.. :
- Léger et facile à lire. Les fichiers JSON sont faciles à lire et à comprendre, même pour les utilisateurs non techniques. Ils sont également légers, ce qui permet de les transmettre facilement sur l'internet.
- 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 supporté 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.
- Facile à valider : Les fichiers JSON peuvent être facilement validés par rapport à un schéma afin de s'assurer qu'ils sont conformes à une structure spécifique ou à un ensemble de règles. Cela permet de détecter rapidement les erreurs et les incohérences dans les données, ce qui peut faire gagner du temps et é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 de travailler avec un fichier JSON :
- 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 arbres. Cela peut rendre difficile l'utilisation de certains types de données dans les fichiers JSON.
- Pas d'application du schéma : Les fichiers JSON n'appliquent aucun schéma, ce qui signifie qu'il est possible de stocker des données incohérentes ou invalides dans un fichier JSON. Cela peut entraîner des erreurs et des bogues dans les applications qui s'appuient sur les données contenues dans le fichier.
- Capacités d'interrogation et d'indexation limitées : Les fichiers JSON n'offrent pas les mêmes capacités d'interrogation et d'indexation que les bases de données traditionnelles. Il peut donc être difficile d'effectuer des recherches complexes ou d'extraire des sous-ensembles spécifiques de données d'un grand fichier JSON.
Top Alternatives à JSON pour un échange de données efficace
Il existe plusieurs alternatives à JSON qui peuvent être utilisées pour l'échange ou le stockage de données, chacune ayant ses propres forces et faiblesses. Voici quelques-unes des alternatives populaires à JSON :
- XML (Extensible Markup Language). XML est un langage de balisage qui utilise des balises pour définir des éléments et des attributs décrivant les données. Il s'agit d'un format plus verbeux que JSON, mais il prend fortement en charge la validation des schémas et la structure des documents.
- 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 le XML, qui prend en charge les types de données complexes et les commentaires.
- MessagePack. MessagePack est un format de sérialisation binaire conçu pour être plus compact et plus efficace que JSON. Il prend en charge les types de données complexes et est idéal pour le transfert de données sur des réseaux à faible largeur de bande.
- Tampons de protocole. Protocol Buffers est un format de sérialisation binaire développé par Google. Il est conçu pour être très efficace et dispose d'un support solide pour la validation des schémas, ce qui le rend idéal pour les systèmes distribués à grande échelle.
- 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 l'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 comme 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 quelques paquets Python populaires que vous pouvez utiliser pour travailler avec des fichiers JSON :
- json. Il s'agit d'un paquetage Python intégré qui fournit des méthodes d'encodage et de décodage des données JSON.
- simplejson. Ce paquetage fournit un encodeur et un décodeur JSON rapide avec prise en charge des types spécifiques à Python.
- ujson. Ce paquetage est un encodeur et décodeur JSON ultra-rapide pour Python.
- jsonschema. Ce paquetage 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 de conversion des données JSON vers et depuis d'autres formats, tels que les objets ou les chaînes de caractères Python, afin de transmettre ou de stocker les données.
La sérialisation est le processus de conversion d'un objet ou d'une structure de données en une chaîne JSON. Ce processus est nécessaire pour transmettre ou 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 souvent transmises entre différents systèmes ou applications.
La désérialisation, quant à elle, est le processus de reconversion d'une chaîne JSON en un objet ou une structure de données. Ce processus est nécessaire pour utiliser les données dans un programme ou un système. La désérialisation JSON est souvent 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 différents contextes, du développement web à l'analyse de données et au-delà. De nombreux langages de programmation proposent des bibliothèques ou des paquets intégrés qui facilitent la sérialisation et la désérialisation et les rendent plus efficaces.
Voici quelques fonctions courantes de la bibliothèque json
qui sont utilisées pour la sérialisation et la désérialisation.
1. json.dumps()
Cette fonction permet de 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. En 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)
# 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() prend un seul argument, la chaîne JSON, et renvoie un objet Python. En 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)
# output: {'name': 'John', 'age': 30}
3. json.dump()
Cette fonction permet de sérialiser un objet Python et de l'écrire dans un fichier JSON. La fonction dump() prend deux arguments, l'objet Python et l'objet fichier. En 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)
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. En 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)
# output: {'name': 'John', 'age': 30}
Python et JSON ont des types de données différents, Python offrant un éventail de types de données plus large que JSON. Alors que Python est capable de stocker des structures de données complexes telles que des ensembles et des dictionnaires, JSON est limité à la manipulation de chaînes de caractères, de nombres, de booléens, de tableaux et d'objets. Examinons quelques-unes de ces différences :
Python |
JSON |
dict |
Objet |
liste |
Tableau |
tuple |
Tableau |
str |
Chaîne |
int |
Nombre |
flotteur |
Nombre |
Vrai |
vrai |
Faux |
faux |
Aucun |
nul |
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)
Dans cet exemple, nous avons une liste appelée my_list contenant un mélange d'entiers et de chaînes. 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()
propose des options pour formater et ordonner la sortie JSON. Voici quelques options courantes :
1. Indent
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)
```
This will produce 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)
Cela produira une chaîne formatée JSON avec les clés dans l'ordre alphabétique :
{"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 prend 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)
```
This will produce 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 APIs
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}")
SORTIE :
Ce code utilise la bibliothèque requests
et la bibliothèque json
de Python 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 demande proprement dite 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 demande a abouti. Si la demande aboutit, le code charge alors le texte de la 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, consultez notre tutoriel sur les Les API Web, les requêtes Python et l'exécution d'une requête HTTP en Python.
Optimiser les performances de JSON en Python
Lorsque vous travaillez avec de grandes quantités de données JSON en Python, il est important d'optimiser les performances de votre code pour qu'il s'exécute efficacement. Voici quelques conseils pour optimiser les performances de JSON en Python :
- Utilisez les bibliothèques
cjson
ouujson
. Ces bibliothèques sont plus rapides que la bibliothèque JSON standard de Python et peuvent améliorer considérablement les performances de la sérialisation et de la désérialisation JSON. - Évitez les conversions inutiles. Les allers-retours entre les objets Python et les données JSON peuvent être coûteux en termes de performances. Si possible, essayez de travailler directement avec des données JSON et évitez les conversions inutiles.
- Utilisez 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.
- Minimiser les frais généraux du réseau. Lors de la transmission de données JSON sur un réseau, la minimisation de la quantité de données transférées peut améliorer les performances. Utilisez des techniques de compression telles que gzip pour réduire la taille des données JSON avant de les transmettre sur un réseau.
- Utilisez 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 demandes de chargement des données.
- 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 faut tenir compte :
- Absence de prise en charge de certains types de données. JSON a un support limité pour 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 rendre la sérialisation et la désérialisation plus compliquées.
- Manque de soutien pour les commentaires. Contrairement à d'autres formats, tels que YAML et XML, JSON ne prend pas en charge les commentaires. Cela peut rendre plus difficile l'ajout de commentaires aux données JSON pour fournir un contexte ou de la documentation.
- Flexibilité limitée pour les extensions. Bien que JSON prenne en charge les extensions par le biais de propriétés personnalisées ou de la propriété $schema, le format n'offre pas autant de flexibilité pour les extensions que d'autres formats, tels que XML ou YAML.
- Pas de norme pour préserver l'ordre des clés. JSON ne dispose pas d'une méthode standard pour préserver l'ordre des clés dans un objet, ce qui complique la comparaison ou la fusion d'objets JSON.
- Soutien limité aux références circulaires. JSON n'offre qu'une prise en charge limitée des références circulaires, c'est-à-dire lorsqu'un objet renvoie à lui-même. Cela peut rendre plus difficile la représentation de certaines structures de données en JSON.
Il est important de connaître ces limites d'implémentation lorsque vous travaillez avec des données JSON afin de vous assurer que le format est adapté à vos besoins et d'éviter les problèmes potentiels liés à la sérialisation, à la désérialisation et à la représentation des données.
Conclusion
Python 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 des données JSON. Que vous construisiez une API ou que vous travailliez avec des applications web côté client, comprendre les 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 bonne voie pour travailler avec des données JSON en Python et construire des applications robustes et évolutives qui exploitent la puissance de ce puissant format d'échange de données.
Si vous souhaitez apprendre à construire des pipelines pour importer des données conservées dans des formats de stockage courants, consultez notre rubrique Ingestion de données rationalisée avec pandas. Vous utiliserez pandas, une importante bibliothèque Python pour l'analyse, pour obtenir des données à partir de diverses sources, notamment une feuille de calcul de réponses à des enquêtes, une base de données de demandes de services publics et une API pour un site d'évaluation populaire.
En savoir plus sur Python
cours
Introduction à l'importation de données en Python
cours
Introduction à MongoDB en Python
blog
Les 32 meilleures questions d'entretien sur AWS et leurs réponses pour 2024
blog
Les 20 meilleures questions d'entretien pour les flocons de neige, à tous les niveaux
Nisha Arya Ahmed
20 min