1. A propos du module JSON
Le module json est une bibliothèque intégrée de Python qui permet de travailler avec le format de données JSON (JavaScript Object Notation). JSON est un format couramment utilisé pour échanger des données entre différents systèmes et est largement utilisé dans les API Web.
2. Principales fonctionnalités du module json
- Encodage JSON : Le module json fournit la fonction json.dumps() qui permet de convertir des objets Python en une chaîne de caractères JSON. Cela s'appelle l'encodage JSON. Vous pouvez spécifier des options supplémentaires telles que indent pour formater la sortie JSON avec des espaces et separators pour personnaliser les séparateurs. Par exemple : json.dumps(data, indent=4).
- Décodage JSON : Le module json fournit la fonction json.loads() qui permet de convertir une chaîne de caractères JSON en un objet Python. Cela s'appelle le décodage JSON. Vous pouvez également utiliser json.load() pour charger des données JSON à partir d'un fichier. Par exemple : json.loads(json_string).
- Types de données pris en charge : Le module json peut traiter les types de données Python courants tels que les dictionnaires, les listes, les chaînes, les nombres, les booléens et les valeurs nulles (None). Il prend également en charge les types personnalisés lorsqu'ils sont utilisés avec des fonctions de conversion spéciales appelées "encodeurs" et "décodeurs".
- Options de personnalisation : Le module json fournit diverses options pour personnaliser le processus de codage et de décodage JSON. Par exemple, vous pouvez utiliser default dans json.dumps() pour spécifier une fonction de conversion personnalisée pour les objets non sérialisables. De même, vous pouvez utiliser object_hook dans json.loads() pour spécifier une fonction de conversion personnalisée pour les objets JSON.
- Gestion des erreurs : Le module json gère les erreurs lors de la conversion entre JSON et les objets Python. Par exemple, une erreur JSONDecodeError est levée si la chaîne JSON est malformée ou ne peut pas être décodée correctement en un objet Python.
- Conclusion: Le module json en Python est un outil puissant pour travailler avec des données JSON. Il facilite l'encodage et le décodage des données JSON, ce qui permet aux développeurs de lire, écrire et manipuler des données JSON de manière simple et efficace.
3. A propos des fichiers JSON
Le format de fichier JSON (JavaScript Object Notation) est un type de fichier largement utilisé pour représenter et stocker des données structurées, de manière similaire à un dictionnaire Python. Il s'agit d'un format standard et populaire pour échanger des données entre un serveur et une application Web. Notez bien JSON est indépendant du langage et constitue son propre standard, ce qui signifie que nous ne sommes pas obligés d'utiliser JavaScript pour manipuler les fichiers JSON.
Exemple: fichier json décrivant une persone
1 2 3 4 |
{"name": "Albert", "email": "albert99@gmail.com", "loisirs": ["Sport", "Cinema", "Lecture" , "Voyage"] } |
Pour travailler avec les fichiers JSON, on doit utiliser le module json de Python. On doit pour cela importer le module avant de pouvoir l'utiliser:
1 |
import json |
4. Lecture d'un fichier ou un contenu JSON en Python
4.1 Lecture d'un contenu JSON
Le module json simplifie l'analyse des chaînes JSON et des fichiers contenant des objets JSON. Pour analyser une chaîne JSON, vous pouvez utiliser la méthode json.loads(). Cette méthode renvoie un dictionnaire.
Exemple 1: Transformer un contenu JSON en un dictionnaire
1 2 3 4 5 6 7 8 9 10 11 12 13 |
import json personne = '{"name": "Albert",\ "email": "albert99@gmail.com", \ "Loisirs": ["Sport", "Cinema", \ "Lecture" , "Voyage"]}' # récupération du contenu sous forme d'un dictionnaire personneDict = json.loads(personne) print( personneDict) # affiche : {'name': 'Albert', 'email': 'albert99@gmail.com', 'Loisirs': ['Sport', 'Cinema', 'Lecture', 'Voyage']} # Accéder à la valeur d'une clé print("loisirs de la personne: " , personneDict['Loisirs']) # Affiche: Loisirs de la personne: ['Sport', 'Cinema', 'Lecture', 'Voyage'] |
4.2 Lecture d'un fichier JSON
Pour lire un fichier JSON, on utilise la même méthode json.load(). Supposons que vous ayez un fichier nommé personne.json qui contient un objet JSON.
personne.json
1 2 3 4 |
{"name": "Albert", "email": "albert99@gmail.com", "loisirs": ["Sport", "Cinema", "Lecture" , "Voyage"] } |
Et maintenant pour lire ce fichier JSON, on utilise le code suivant:
1 2 3 4 5 6 7 |
import json with open('chemin_du_fichier/personne.json') as file: jsonData = json.load(file) print(jsonData) # Output: {'name': 'Albert', 'email': 'albert99@gmail.com', 'loisirs': ['Sport', 'Cinema', 'Lecture', 'Voyage']} |
5. Convertir un dictionnaire à une chaine ou à un fichier JSON
5.1 Convertir un dictionnaire à une chaine JSON
En Python, il est facile de convertir un dictionnaire à une chaine JSON via la méthode json.dumps():
Exemple
1 2 3 4 5 6 7 8 9 10 |
import json personneDict = {'name': 'Albert', 'email': 'albert99@gmail.com', 'loisirs': ['Sport', 'Cinema', 'Lecture', 'Voyage']} print(type(personneDict)) # affiche <class 'dict'> jsonData = json.dumps(personneDict) print(type(jsonData)) # affiche: <class 'str'> |
Voici un tableau résumant les objets Python et leur équivalents en JSON.
Table here ......................
5.2 Convertir un dictionnaire à un fichier JSON
Pour convertir un dictionnaire Python en un fichier JSON, on utilise la méthode json.dump() ( dump sans 's')
Exemple
1 2 3 4 5 6 7 8 9 |
import json personneDict = {'name': 'Albert', 'email': 'albert99@gmail.com', 'loisirs': ['Sport', 'Cinema', 'Lecture', 'Voyage'] } with open('personne.json', 'w') as jsonFile: json.dump(personneDict, jsonFile) |
Après exécution, un fichier personne.json est généré:
personne.jsom
1 2 3 4 |
{"name": "Albert", "email": "albert99@gmail.com", "loisirs": ["Sport", "Cinema", "Lecture", "Voyage"] } |
6. Liste des méthodes associées au module JSON
Le module json en Python fournit plusieurs méthodes pour travailler avec des données JSON. Voici une liste des principales méthodes associées à ce module :
- json.dumps(obj, *, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, default=None, sort_keys=False, **kw): Cette méthode permet de convertir un objet Python en une chaîne de caractères JSON encodée. Elle prend en charge plusieurs paramètres optionnels pour personnaliser la sortie JSON, tels que indent pour le formatage avec des espaces, separators pour spécifier les séparateurs, et default pour la conversion personnalisée des objets non sérialisables.
- json.loads(s, *, cls=None, object_hook=None, parse_float=None, parse_int=None, parse_constant=None, object_pairs_hook=None, **kw): Cette méthode permet de convertir une chaîne de caractères JSON en un objet Python. Elle renvoie l'objet Python équivalent à partir de la chaîne JSON. Elle prend également en charge des paramètres optionnels, tels que object_hook pour une conversion personnalisée des objets JSON en objets Python et parse_float, parse_int, et parse_constant pour la conversion personnalisée des nombres.
- json.dump(obj, fp, *, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, default=None, sort_keys=False, **kw): Cette méthode permet de sérialiser un objet Python directement vers un fichier JSON. Elle écrit les données JSON encodées dans le fichier spécifié.
- json.load(fp, *, cls=None, object_hook=None, parse_float=None, parse_int=None, parse_constant=None, object_pairs_hook=None, **kw): Cette méthode permet de charger des données JSON à partir d'un fichier JSON et de les convertir en objets Python. Elle renvoie l'objet Python équivalent à partir du fichier JSON.
- json.JSONEncoder.default(self, o): Cette méthode est utilisée pour la conversion personnalisée d'objets non sérialisables lors de l'encodage JSON. Vous pouvez la sous-classer et l'implémenter pour spécifier comment convertir des objets personnalisés en types de données JSON valides.
- json.JSONDecoder.object_hook(self, dct): Cette méthode est utilisée pour la conversion personnalisée des objets JSON en objets Python lors du décodage JSON. Vous pouvez la sous-classer et l'implémenter pour spécifier comment convertir des objets JSON en objets personnalisés.
- json.JSONEncoder.encode(self, o): Cette méthode est appelée pour encoder un objet en JSON. Vous pouvez la sous-classer et l'implémenter pour personnaliser le processus d'encodage JSON.
- json.JSONDecoder.decode(self, s, *, cls=None, **kw): Cette méthode est utilisée pour décoder une chaîne JSON en objets Python. Elle est appelée par json.loads() pour effectuer le décodage JSON. Vous pouvez la sous-classer et l'implémenter pour personnaliser le processus de décodage JSON.
- json.JSONEncoder.iterencode(self, o, *, _one_shot=False): Cette méthode itère sur un objet et produit une séquence d'objets JSON encodés. Elle peut être utilisée pour encoder de grands objets en JSON de manière itérative, plutôt que de les encoder en une seule chaîne.
- json.JSONDecoder.scan_once(self, *args, **kwargs): Cette méthode est utilisée pour analyser un fragment JSON unique. Elle est utilisée en interne par le module json pour le décodage JSON.
Ces méthodes sont les plus couramment utilisées pour travailler avec des données JSON en utilisant le module json en Python. Elles offrent une flexibilité et une facilité d'utilisation pour l'encodage, le décodage, la lecture et l'écriture de données JSON.
Younes Derfoufi
CRMEF OUJDA