Une page envoie ses données au format JSON plutôt qu'en urlencoded
Exercice supplémentaire · niveau 2 · NSI (première), chapitre 10 — Interagir sur le Web · Ce que la page fait toute seule
Énoncé
Une page envoie ses données au format JSON plutôt qu'en urlencoded. Le serveur, écrit en Python, reçoit la chaîne suivante :
recu = '{"pseudo": "nour", "notes": [12, 15, 9], "memoriser": false}'
- Écrire le code Python qui en extrait la moyenne des notes.
- Que devient
falseune fois lu ? Etnull? - Citer deux valeurs Python que JSON ne sait pas représenter.
Corrigé
1.
import json
recu = '{"pseudo": "nour", "notes": [12, 15, 9], "memoriser": false}'
donnees = json.loads(recu)
moyenne = sum(donnees["notes"]) / len(donnees["notes"])
print(donnees["pseudo"], moyenne, donnees["memoriser"])
# nour 12.0 False
json.loads transforme la chaîne en un dictionnaire Python, du chapitre 5 : on y accède ensuite par ses clés, comme d'habitude. L'opération inverse est json.dumps.
2. false devient False, et null devient None. Attention à la casse : JSON écrit ses booléens en minuscules, Python avec une majuscule. Un JSON contenant False est invalide.
3. Les tuples (relus comme des listes), les ensembles, et les clés qui ne sont pas des chaînes — json.dumps({1: "a"}) produit \{"1": "a"\}, et la clé revient en "1", chaîne de caractères. On peut ajouter les fonctions et tout objet un peu élaboré.
Pourquoi ce format s'est imposé : il est lisible par un humain, écrit en texte, et tout langage sait le lire. C'est précisément parce qu'il ne sait représenter que quatre types simples — nombres, chaînes, listes, dictionnaires — plus les booléens et null, qu'aucun langage n'a de mal à s'y couler. La pauvreté du format fait son universalité.
Les autres exercices de ce chapitre Le cours du chapitre
Un blocage sur cet exercice ? Le tuteur d'Adloun guide par questions, sans donner la réponse.