Un ticket qui voyage
Un client de Marseille signale que sa box internet ne marche plus. Le site du support crée un ticket.
Ce ticket passe par trois logiciels : le site, l’outil des techniciens et l’envoi de SMS.
Pour se comprendre, ces logiciels s’échangent les données dans un format texte simple. Le plus courant s’appelle JSON.
À la fin de cette leçon
Remarque
Je peux lire et écrire des données en JSON et en YAML.
Mots-clés
| Mot | Ce que ça veut dire | Exemple |
|---|---|---|
| JSON | un format texte pour échanger des données | |
| Objet | des paires clé et valeur entre accolades | {"statut": "ouvert"} |
| Clé | le nom qui donne accès à une valeur | "statut" |
| Liste | des valeurs dans l’ordre, entre crochets | ["box", "wifi"] |
| Imbrication | un objet ou une liste placé dans un autre | |
| YAML | un format qui range les mêmes données par indentation |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Un objet JSON range des valeurs par clé
Un objet JSON s’écrit entre accolades { }. Il contient des paires : une clé, deux-points, une valeur.
Les clés et les textes sont entre guillemets doubles. Les nombres s’écrivent sans guillemets.
En Python, json.loads lit ce texte et donne un dictionnaire. On lit une valeur avec sa clé.
Lisez un ticket
import json
texte = '{"numero": 812, "client": "Karim", "priorite": "haute"}'
ticket = json.loads(texte)
# Une clé donne sa valeur.
print(ticket["client"])
print(ticket["priorite"])
# À vous : affichez le numéro du ticket.
Une erreur fréquente
Attention
Beaucoup pensent que JSON accepte les guillemets simples, comme Python. C’est faux : {'statut': 'ouvert'} est refusé. En JSON, les clés et les textes prennent toujours des guillemets doubles.
Les données s’emboîtent les unes dans les autres
Une valeur peut être elle-même un objet ou une liste. On parle d’imbrication.
Pour atteindre une valeur profonde, on avance pas à pas : le ticket, puis le client, puis sa ville.
Une liste s’écrit entre crochets. Sa première case porte le numéro 0.
Allez chercher une valeur profonde
import json
texte = """
{
"numero": 812,
"client": {"nom": "Karim", "ville": "Marseille"},
"messages": ["Ma box ne répond plus", "Toujours en panne ce soir"]
}
"""
ticket = json.loads(texte)
# Pas à pas : le ticket, puis le client, puis sa ville.
print(ticket["client"]["ville"])
# Une liste compte à partir de 0.
print(ticket["messages"][0])
# À vous : affichez le second message.
Écrire du JSON, lire du YAML
json.dumps fait le chemin inverse : il écrit des données Python en texte JSON.
YAML contient les mêmes données que JSON, sans accolades. Le retrait au début de la ligne montre ce qui est dedans. Un tiret marque un élément de liste.
On trouve du YAML dans les fichiers de configuration des serveurs.
Écrivez du JSON
import json
ticket = {"numero": 813, "statut": "ouvert", "tags": ["box", "wifi"]}
# json.dumps transforme les données Python en texte JSON.
print(json.dumps(ticket, ensure_ascii=False))
# À vous : passez le statut à "fermé", puis exécutez.
Le même ticket en YAML
# Le même ticket en YAML
numero: 812
client:
nom: Karim
ville: Marseille
messages:
- Ma box ne répond plus
- Toujours en panne ce soir
Exemple : JSON et YAML côte à côte
| Donnée | En JSON | En YAML |
|---|---|---|
| Une valeur | "numero": 812 | numero: 812 |
| Un objet dans un objet | "client": {"ville": "Marseille"} | client: puis ville: Marseille en retrait |
| Une liste | "tags": ["box", "wifi"] | tags: puis - box et - wifi en retrait |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.