En NSI, tu vas forcément croiser le format JSON (JavaScript Object Notation). C'est un format de données incroyablement répandu : sur le web, pour stocker des réglages, pour échanger des informations entre un serveur et une application, et même dans certains fichiers de configuration. Pas de panique : le JSON est simple à lire et à écrire, surtout avec Python. Dans cet article, je vais te donner toutes les astuces pour le maîtriser, que tu sois en Seconde, Première ou Terminale.
Qu'est-ce que le format JSON exactement ?
Le JSON est un format de texte qui permet de représenter des données structurées sous forme de paires clé-valeur. Il est né du langage JavaScript, mais il est aujourd'hui utilisé dans presque tous les langages, car il est à la fois lisible par un humain et facilement interprétable par une machine.
Prenons un exemple concret. Imagine que tu veuilles représenter un élève avec son nom, son âge et ses notes. En JSON, ça donne :
{
"nom": "Alice",
"age": 17,
"notes": [15, 18, 12]
}
Ici, on a un objet JSON délimité par des accolades. À l'intérieur, on trouve des paires "clé" : "valeur". Les clés sont toujours des chaînes de caractères (entre guillemets doubles), et les valeurs peuvent être de différents types : chaîne, nombre, booléen, tableau, ou même un autre objet. Les tableaux sont délimités par des crochets [].
Le JSON est un format de données structurées : il organise l'information de manière hiérarchique. Tu peux imbriquer des objets dans des objets, créer des listes d'objets, etc. C'est cette structure qui le rend si pratique pour représenter des données complexes.
Pourquoi le JSON est-il important en NSI ?
Le programme de NSI, notamment en Première et Terminale, met l'accent sur la représentation des données. Le JSON est souvent utilisé comme exemple de format structuré, car il est omniprésent dans le développement web et les API. Comprendre le JSON, c'est comprendre comment les données circulent sur Internet.
Par exemple, quand tu utilises une application météo sur ton téléphone, elle envoie une requête à un serveur. Le serveur répond avec un fichier JSON contenant les prévisions. L'application lit ce JSON et affiche les températures. Sans JSON, l'échange serait beaucoup plus compliqué.
En NSI, tu seras amené à :
- Lire et comprendre un fichier JSON.
- Extraire des données d'un JSON avec Python.
- Créer un JSON à partir de données Python.
- Manipuler des données structurées pour résoudre des problèmes.
Et bonne nouvelle : Python a une bibliothèque standard json qui rend tout ça très simple. On va voir ça tout de suite.
Lire et écrire du JSON avec Python : les bases
Importer le module json
Pour utiliser le JSON en Python, tu dois d'abord importer le module json :
import json
Ce module fournit deux fonctions principales : json.load() pour lire un fichier JSON, et json.dump() pour écrire un fichier JSON. Il y a aussi json.loads() et json.dumps() pour travailler avec des chaînes de caractères.
Convertir une chaîne JSON en dictionnaire Python
Voici un exemple : tu as une chaîne JSON sous les yeux (par exemple, reçue depuis une API) et tu veux la manipuler en Python. Tu utilises json.loads() :
import json
donnees_json = '{"nom": "Alice", "age": 17, "notes": [15, 18, 12]}'
dico = json.loads(donnees_json)
print(dico["nom"]) # Affiche "Alice"
print(dico["notes"][0]) # Affiche 15
La chaîne JSON est transformée en dictionnaire Python. Les objets JSON deviennent des dict, les tableaux deviennent des listes, les nombres deviennent des int ou float, etc. C'est magique, non ?
Lire un fichier JSON
Si tu as un fichier eleve.json dans ton répertoire, tu peux le lire ainsi :
import json
with open("eleve.json", "r") as f:
dico = json.load(f)
print(dico)
La fonction json.load() lit le fichier et le convertit en structure Python. Attention : le fichier doit contenir du JSON valide, sinon une erreur sera levée.
Écrire un JSON dans un fichier
Pour enregistrer un dictionnaire Python dans un fichier JSON, utilise json.dump() :
import json
donnees = {
"nom": "Alice",
"age": 17,
"notes": [15, 18, 12]
}
with open("eleve.json", "w") as f:
json.dump(donnees, f, indent=4)
L'option indent=4 permet d'écrire le JSON de manière lisible, avec des retraits. C'est pratique pour les humains ! Sans indent, tout serait sur une seule ligne, moins agréable à lire.
Convertir un dictionnaire en chaîne JSON
Parfois, tu veux obtenir la chaîne JSON pour l'envoyer dans une requête HTTP ou l'afficher. Utilise json.dumps() :
import json
donnees = {"nom": "Alice", "age": 17}
chaine_json = json.dumps(donnees)
print(chaine_json) # Affiche {"nom": "Alice", "age": 17}
Et voilà, tu sais maintenant lire et écrire du JSON en Python. C'est déjà énorme ! Mais il y a des pièges à éviter.
Les erreurs courantes et comment les éviter
Quand tu manipules du JSON, tu vas rencontrer quelques erreurs classiques. Voici comment les éviter.
1. Les guillemets simples au lieu de doubles
Le JSON exige des guillemets doubles pour les clés et les chaînes. En Python, on utilise souvent les guillemets simples, mais dans un fichier JSON, c'est interdit. Par exemple, ceci est invalide :
{'nom': 'Alice'}
Il faut écrire :
{"nom": "Alice"}
Quand tu écris du JSON à la main, fais attention. Mais quand tu utilises json.dumps(), Python s'occupe de tout.
2. Les virgules en trop
En Python, tu peux laisser une virgule après le dernier élément d'une liste ou d'un dict. Mais en JSON, c'est interdit. Par exemple :
{"nom": "Alice", "age": 17,}
est invalide. La virgule après 17 doit être retirée. Encore une fois, json.dumps() gère ça pour toi, mais si tu écris du JSON à la main, sois vigilant.
3. Les types non sérialisables
Le module json ne sait pas convertir tous les objets Python. Par exemple, un objet datetime ou un ensemble (set) ne sont pas sérialisables par défaut. Si tu essaies, tu obtiendras une erreur TypeError. Pour les gérer, tu peux convertir ces objets en chaîne avant de les mettre dans ton dict, ou définir une fonction de sérialisation personnalisée.
4. Les caractères accentués
Par défaut, json.dumps() écrit les caractères non-ASCII avec des échappements (par exemple \u00e9 pour é). Si tu veux garder les accents lisibles, utilise l'option ensure_ascii=False :
chaine_json = json.dumps(donnees, ensure_ascii=False)
Mais attention : certains systèmes peuvent mal interpréter ces caractères. En général, pour un fichier, il est plus sûr de garder les échappements. C'est un détail, mais ça peut t'éviter des bugs.
Cas d'usage concret : analyser des données depuis une API
Pour mettre en pratique, imagine que tu veux récupérer des informations sur les planètes depuis une API publique (par exemple, l'API de l'Agence Spatiale Européenne, ou plus simplement, un fichier JSON que tu as trouvé sur Internet). Tu peux écrire un script Python qui lit un fichier JSON contenant une liste de planètes et qui affiche leurs caractéristiques.
Voici un exemple de fichier planetes.json :
[
{"nom": "Terre", "masse": 5.97e24, "rayon": 6371},
{"nom": "Mars", "masse": 6.42e23, "rayon": 3389},
{"nom": "Jupiter", "masse": 1.90e27, "rayon": 69911}
]
Et un script Python pour le lire et afficher les planètes avec leur masse en tonnes :
import json
with open("planetes.json", "r") as f:
planetes = json.load(f)
for planete in planetes:
masse_tonnes = planete["masse"] / 1000 # conversion en tonnes (simpliste)
print(f"{planete['nom']} : masse = {masse_tonnes:.2e} tonnes, rayon = {planete['rayon']} km")
Ce script lit le JSON, le convertit en une liste de dictionnaires, puis itère dessus. C'est exactement ce que tu pourrais faire pour traiter des données réelles.
Conseils pour réussir en NSI avec le JSON
Maintenant que tu as les bases, voici des conseils pour aborder le JSON dans tes évaluations et au bac.
1. Entraîne-toi à lire et écrire du JSON à la main
Même si Python fait le travail, il est important de savoir reconnaître une erreur de syntaxe dans un JSON. Par exemple, sur un QCM, on pourrait te montrer un extrait JSON et te demander s'il est valide. Entraîne-toi à repérer les guillemets manquants, les virgules en trop, etc.
2. Maîtrise la conversion entre types
Comprends bien les correspondances :
- Objet JSON -> dict Python
- Tableau JSON -> list Python
- Chaîne JSON -> str Python
- Nombre JSON -> int ou float
- booléen JSON -> bool Python
- null JSON -> None Python
Ces correspondances sont systématiques et tu dois les connaître par cœur.
3. Utilise le module json dans tes projets
Dans tes projets de NSI, n'hésite pas à utiliser le JSON pour sauvegarder les paramètres, les scores de jeux, ou pour échanger des données entre modules. Plus tu l'utiliseras, plus tu seras à l'aise.
4. Pense à la validation
Quand tu lis un JSON depuis une source externe, il peut être mal formé. Dans un vrai programme, tu devrais gérer les erreurs avec un bloc try/except. Par exemple :
try:
with open("data.json", "r") as f:
data = json.load(f)
except json.JSONDecodeError:
print("Le fichier n'est pas un JSON valide.")
C'est une bonne pratique que le bac pourrait évaluer.
5. Lien avec le bac NSI
Au bac, le JSON peut apparaître dans les exercices de la partie pratique ou dans l'épreuve écrite. Par exemple, on peut te demander d'écrire une fonction qui extrait des informations d'un JSON, ou de produire un JSON à partir d'une structure Python. Les compétences attendues sont :
- Lire et modifier un fichier JSON.
- Utiliser les bibliothèques standards de Python.
- Manipuler des dictionnaires et des listes.
Si tu maîtrises ces points, tu seras prêt.
Aller plus loin : JSON et API
Le JSON est le langage des API (Application Programming Interface). En NSI, tu n'étudies pas forcément les API en détail, mais c'est un prolongement naturel. Si tu veux explorer, tu peux utiliser la bibliothèque requests pour faire des requêtes HTTP et récupérer des données JSON. Par exemple :
import requests
reponse = requests.get("https://api.exemple.com/donnees")
donnees = reponse.json()
print(donnees)
Mais attention : le module requests n'est pas inclus par défaut dans l'environnement de l'épreuve du bac. Il faut donc se concentrer sur le module json.
Si tu veux t'entraîner, tu peux consulter les exercices sur nsi-lycee.fr pour trouver des sujets sur le JSON et les données structurées. Tu peux aussi revoir les cours de NSI pour consolider les bases.
Conclusion
Le JSON est un format incontournable en NSI. Avec le module json de Python, tu peux facilement lire, écrire et manipuler des données structurées. N'oublie pas de t'entraîner régulièrement, de vérifier la validité de tes JSON, et de bien comprendre les conversions de types. Tu as maintenant toutes les astuces pour réussir !
Si tu as besoin de ressources supplémentaires, n'hésite pas à jeter un œil aux cours de soutien sur AlloBac ou AlloLycée pour approfondir. Et surtout, continue à coder, c'est comme ça qu'on progresse !
