Skip to content

Chapitre 1.3 : Le format JSON

Temps d'étude : 35 minutes


1. JSON : Le langage de la communication spatiale

Imaginez qu'une sonde spatiale et le Centre de Contrôle de Mission parlent des langues différentes. Le JSON (JavaScript Object Notation) est un langage de données universel, compréhensible par les humains et les machines. Comme la langue internationale des astronautes !

Propriétés principales :

  • 🪶 Léger : transmission rapide même avec un signal faible
  • 👀 Lisible par l'homme : la structure est visible à l'œil nu
  • 🔄 Universel : pris en charge par tous les langages de programmation

💡 Analogie spatiale :

Le JSON est comme un télégramme numérique avec des données sur les étoiles. Au lieu du morse, des structures claires {clé: valeur}.


2. Anatomie d'un message JSON

Le JSON est constitué de deux types de structures :

A. Objets (Vaisseaux spatiaux)

{
  "name": "Voyager-1",
  "launch_year": 1977,
  "is_active": true,
  "position": [-19.1, 42.7, 0.3]
}

B. Tableaux (Amas stellaires)

[
  {"name": "Sirius", "magnitude": -1.46},
  {"name": "Canopus", "magnitude": -0.74},
  {"name": "Arcturus", "magnitude": -0.05}
]

⚡ Règles de syntaxe :

  • Clés entre guillemets " "
  • Valeurs : chaînes de caractères, nombres, booléens (true/false), null
  • Données séparées par des virgules
  • Accolades {} pour les objets, crochets [] pour les tableaux

3. JSON vs XML : La bataille des formats

Paramètre JSON (Satellite moderne) XML (Ancien télescope)
Lisibilité Élevée (accès direct aux champs) Faible (balises <planet>...</planet>)
Taille Compact Volumineux (+30% à la taille)
Traitement Rapide Lent
Exemple {"planet": "Mars"} <planet>Mars</planet>

🔭 Pourquoi le JSON a-t-il gagné dans l'espace ?

Les API de la NASA, SpaceX et l'ESA utilisent le JSON — il est idéal pour le transfert de données !


4. Travailler avec JSON dans le code

Exemple Python (récupération de données sur la Lune) :

import requests
import json

# Nous utilisons une API réelle, par exemple, pour obtenir des données sur le système solaire
# de l'API OpenData du Système Solaire
try:
    response = requests.get("https://api.le-systeme-solaire.net/rest/bodies/terre")
    response.raise_for_status() # Vérifie les erreurs HTTP (4xx, 5xx)

    planet_data = response.json()

    print(f"Nom : {planet_data['englishName']}")
    print(f"Satellites : {[moon['moon'] for moon in planet_data['moons']]}")

    # Conversion du dictionnaire Python en chaîne JSON pour l'enregistrement
    planet_json_str = json.dumps(planet_data, indent=2, ensure_ascii=False) # ensure_ascii=False pour le cyrillique
    print("\n--- JSON Formaté ---")
    print(planet_json_str)

except requests.exceptions.RequestException as e:
    print(f"Erreur de requête : {e}")

Exemple JavaScript (traitement des données du télescope) :

const Data = `{
  "id": "terre",
  "name": "La Terre",
  "englishName": "Earth",
  "isPlanet": true,
  "moons": [
    {
      "moon": "La Lune",
      "rel": "https://api.le-systeme-solaire.net/rest/bodies/lune"
    }
  ],
  "semimajorAxis": 149598023,
  "perihelion": 147095000,
  "aphelion": 152100000,
  "eccentricity": 0.0167,
  "inclination": 0,
  "mass": {
    "massValue": 5.97237,
    "massExponent": 24
  },
  "vol": {
    "volValue": 1.08321,
    "volExponent": 12
  },
  "density": 5.5136,
  "gravity": 9.8,
  "escape": 11190,
  "meanRadius": 6371.0084,
  "equaRadius": 6378.1366,
  "polarRadius": 6356.8,
  "flattening": 0.00335,
  "dimension": "",
  "sideralOrbit": 365.256,
  "sideralRotation": 23.9345,
  "aroundPlanet": null,
  "discoveredBy": "",
  "discoveryDate": "",
  "alternativeName": "",
  "axialTilt": 23.4393,
  "avgTemp": 288,
  "mainAnomaly": 358.617,
  "argPeriapsis": 85.901,
  "longAscNode": 18.272,
  "bodyType": "Planet"
}`;

const dataObj = JSON.parse(Data);
console.log(dataObj.target);


5. Validation JSON : Vérification du "signal"

Avant d'utiliser les données, assurez-vous que le JSON :

  1. A une structure correcte (vérifiez les parenthèses !)

  2. Contient les champs attendus

  3. N'a pas d'erreurs de syntaxe

Outils : - JSONLint (comme un détecteur de débris spatiaux pour le JSON) - Parseurs de langage intégrés (généreront une erreur en cas de format incorrect)

⚠️ Exemple d'erreur :

{"planet": "Mars" → Pas d'accolade fermante !

Solution : Utilisez toujours json.loads() en Python ou JSON.parse() en JS pour la vérification.


Quiz pour le renforcement

1. JSON signifie...

2. Comment un objet est-il désigné en JSON :

3. Qu'est-ce qui N'est PAS une valeur valide en JSON?

4. Pourquoi JSON est-il meilleur que XML pour les API spatiales ?

5. Comment convertir une chaîne JSON en objet Python?


🚀 Résumé du chapitre :

Le JSON est l'espéranto spatial du monde des API. En connaissant sa structure, vous pourrez :

  • 📡 Recevoir des données de télescopes et de sondes

  • 🔧 Convertir des informations entre les systèmes

  • 🛰️ Sauvegarder des données scientifiques dans des fichiers

Préparez-vous à l'amarrage ! Dans le prochain chapitre, nous explorerons l'architecture REST API — le système de contrôle de la "station spatiale" de votre serveur.

📌 Pratique : Rendez-vous sur NASA Open APIs, trouvez l'API des astéroïdes (Asteroids NeoWs) et étudiez la structure JSON de la réponse !