Python - JSON : Guide Ultime pour les Débutants en Gestion des JSON en Python

Bonjour à vous, futurs maîtres Python ! Aujourd'hui, nous allons entreprendre un voyage passionnant dans le monde du JSON en Python. Ne vous inquiétez pas si vous êtes nouveau en programmation – je serai votre guide amical et nous allons procéder pas à pas. À la fin de ce tutoriel, vous manipulerez le JSON comme un professionnel !

Python - JSON

JSON en Python

Qu'est-ce que JSON ?

JSON, ou JavaScript Object Notation, est un format léger d'échange de données. Pensez-y comme une manière de stocker et de transporter des données – comme une langue universelle que différents programmes peuvent comprendre. Il est lisible par des humains (ce qui est génial pour nous !) et facile pour les machines à analyser et à générer.

Dans le monde de la programmation, JSON est comme le garçon cool que tout le monde veut fréquenter. Il est utilisé partout – des API web aux fichiers de configuration. C'est pourquoi apprendre à travailler avec JSON en Python est une compétence essentielle !

Pourquoi utiliser JSON avec Python ?

Python et JSON sont comme beurre de cacahuètes et gelée – ils fonctionnent juste parfaitement ensemble ! Python dispose de support intégré pour JSON grâce à son module json. Cela signifie que vous pouvez facilement convertir des objets Python en JSON et vice versa.

Commençons par importer le module JSON :

import json

Simple, non ? Maintenant, nous sommes prêts à plonger dans le bonifiant !

Sérialisation JSON

La sérialisation est tout simplement le fait de convertir des objets Python en chaînes JSON. C'est comme traduire Python dans une langue que d'autres programmes peuvent comprendre.

Sérialisation de Base

Commençons par un dictionnaire Python simple :

mon_dictionnaire = {
"nom": "Alice",
"âge": 30,
"ville": "Wonderland"
}

chaine_json = json.dumps(mon_dictionnaire)
print(chaine_json)

Sortie :

{"nom": "Alice", "âge": 30, "ville": "Wonderland"}

Ici, json.dumps() prend notre dictionnaire Python et le transforme en une chaîne JSON. C'est comme de la magie, mais mieux car c'est vraiment du code !

Impression Jolie

Parfois, nous voulons que notre JSON soit joli et lisible. C'est là que l'impression jolie entre en jeu :

json_joli = json.dumps(mon_dictionnaire, indent=4)
print(json_joli)

Sortie :

{
"nom": "Alice",
"âge": 30,
"ville": "Wonderland"
}

Le paramètre indent=4 indique à Python d'ajouter 4 espaces d'indentation, rendant notre JSON propre et soigné.

Écriture JSON dans un Fichier

Souvent, nous voulons sauvegarder nos données JSON dans un fichier. Voici comment :

with open('data.json', 'w') as fichier:
json.dump(mon_dictionnaire, fichier, indent=4)

Cela crée un fichier appelé data.json et écrit notre JSON joliment imprimé dedans. C'est comme sauvegarder un message texte, mais pour des données !

Désérialisation JSON

La désérialisation est le processus inverse – transformer des chaînes JSON en objets Python. C'est comme traduire ce langage universel zurück en Python.

Désérialisation de Base

Commençons par une chaîne JSON :

chaine_json = '{"nom": "Bob", "âge": 25, "ville": "Neverland"}'

dictionnaire_python = json.loads(chaine_json)
print(dictionnaire_python)
print(type(dictionnaire_python))

Sortie :

{'nom': 'Bob', 'âge': 25, 'ville': 'Neverland'}
<class 'dict'>

json.loads() prend notre chaîne JSON et la transforme à nouveau en un dictionnaire Python. C'est comme de la magie à l'envers !

Lecture JSON à partir d'un Fichier

Souvenez-vous de ce fichier que nous avons créé plus tôt ? Lisons-le à nouveau :

with open('data.json', 'r') as fichier:
donnees_charges = json.load(fichier)

print(donnees_charges)

Cela lit les données JSON de notre fichier et les convertit à nouveau en un objet Python. C'est comme ouvrir un message texte sauvegardé et le lire !

Gestion Avancée des JSON

Maintenant que nous avons couvert les bases, examinons quelques techniques plus avancées.

Gestion des Types de Données Complexe

JSON est génial, mais il ne comprend que quelques types de données nativement. Voici une table de la correspondance entre les types Python et les types JSON :

Type Python Type JSON
dict objet
list, tuple tableau
str chaîne
int, float nombre
True vrai
False faux
None null

Mais qu'en est-il des types plus complexes comme les objets datetime ? C'est là que l'encodage personnalisé entre en jeu !

Classe JSONEncoder

La classe JSONEncoder nous permet de définir un encodage personnalisé pour les objets Python qui ne sont pas nativement supportés par JSON.

Voici un exemple avec un objet datetime :

from datetime import datetime

class DateTimeEncoder(json.JSONEncoder):
def default(self, obj):
if isinstance(obj, datetime):
return obj.isoformat()
return super().default(obj)

donnees = {
"nom": "Charlie",
"anniversaire": datetime(1990, 5, 15)
}

chaine_json = json.dumps(donnees, cls=DateTimeEncoder)
print(chaine_json)

Sortie :

{"nom": "Charlie", "anniversaire": "1990-05-15T00:00:00"}

Notre encodeur personnalisé convertit l'objet datetime en une chaîne de format ISO, que JSON peut gérer.

Classe JSONDecoder

De manière similaire, la classe JSONDecoder nous permet de personnaliser la manière dont JSON est décodé en objets Python.

Voici un exemple qui convertit les chaînes de format ISO en objets datetime :

import dateutil.parser

class DateTimeDecoder(json.JSONDecoder):
def __init__(self, *args, **kwargs):
json.JSONDecoder.__init__(self, object_hook=self.object_hook, *args, **kwargs)

def object_hook(self, obj):
for key, value in obj.items():
if isinstance(value, str):
try:
obj[key] = dateutil.parser.parse(value)
except ValueError:
pass
return obj

chaine_json = '{"nom": "Charlie", "anniversaire": "1990-05-15T00:00:00"}'
donnees_decodees = json.loads(chaine_json, cls=DateTimeDecoder)
print(donnees_decodees)
print(type(donnees_decodees['anniversaire']))

Sortie :

{'nom': 'Charlie', 'anniversaire': datetime.datetime(1990, 5, 15, 0, 0)}
<class 'datetime.datetime'>

Notre décodeur personnalisé reconnaît la chaîne de format ISO et la convertit à nouveau en un objet datetime.

Et voilà, mes amis ! Nous avons exploré le monde du JSON en Python, des bases de la sérialisation et de la désérialisation aux techniques avancées des encodeurs et décodeurs personnalisés. Souvenez-vous, la pratique fait le maître, donc n'hésitez pas à expérimenter avec ces concepts.

Le JSON peut sembler une petite partie de Python, mais c'est une compétence cruciale dans le monde data d'aujourd'hui. Que vous construissiez des applications web, travaillez avec des API ou analysez des données, vos compétences en JSON nouvellement acquises vous seront très utiles.

Continuez à coder, à apprendre, et surtout, à vous amuser avec Python !

Credits: Image by storyset