JSON

JSON #

Le format JSON (JavaScript Object Notation) est un standard ouvert pour l’échange de données, largement adopté pour sa simplicité et sa lisibilité. Introduit en 2001 par Douglas Crockford, il est devenu essentiel dans le développement web, les API REST et les configurations d’applications modernes.

Les types de données supportés par JSON sont limités mais suffisants pour la plupart des cas d’usage : chaînes de caractères entre guillemets doubles, nombres (entiers ou flottants), booléens (true/false), null, objets (paires clé-valeur) et tableaux (listes ordonnées). Cette simplicité facilite le parsing et la génération, avec des bibliothèques natives dans presque tous les langages de programmation.

Un objet JSON est délimité par des accolades {} et contient des paires clé-valeur séparées par des virgules. Les clés sont toujours des chaînes, tandis que les valeurs peuvent être de n’importe quel type JSON valide. Par exemple : {"nom": "Alice", "âge": 30, "actif": true} représente un objet simple avec trois propriétés.

Les tableaux JSON utilisent des crochets [] et contiennent des valeurs séparées par des virgules. Ils peuvent mélanger différents types : [1, "deux", true, null, {"clé": "valeur"}]. Cette flexibilité permet de représenter des structures complexes comme des listes d’objets ou des matrices multidimensionnelles.

La syntaxe JSON est stricte : pas de commentaires, pas de virgule finale, guillemets doubles obligatoires pour les chaînes, pas de fonctions ou d’expressions. Cette rigueur assure une interopérabilité parfaite entre systèmes, mais peut rendre l’écriture manuelle fastidieuse pour les fichiers de configuration complexes.

Pour les chaînes de caractères, JSON supporte les séquences d’échappement standard : \" pour les guillemets, \\ pour la barre oblique inverse, \/ pour la barre oblique, \b, \f, \n, \r, \t, et \uXXXX pour les caractères Unicode. Cela permet d’inclure n’importe quel caractère dans les chaînes. Les chaînes de caractères en JSON ne peuvent pas contenir de guillemets doubles non échappés ni de caractère de contrôle non échappé (U+0000 à U+001F) ce qui inclut les retours de chariot. Une chaîne de caractères en JSON doit donc apparaître sur une seule ligne. Il faut aussi obligatoirement utiliser les guillemets droits doubles (").

Les nombres en JSON suivent la notation décimale standard, sans distinction entre entiers et flottants. Ils peuvent être positifs ou négatifs, avec ou sans partie décimale : 42, -3.14, 1e10. Attention aux précisions flottantes qui peuvent varier selon les langages.

La valeur null représente l’absence de valeur, équivalente à undefined en JavaScript ou None en Python. Elle est souvent utilisée pour indiquer des champs optionnels non définis.

L’imbrication est une force de JSON : objets dans des tableaux, tableaux dans des objets, permettant des structures hiérarchiques complexes. Par exemple, un catalogue de produits peut être représenté comme un objet contenant un tableau d’objets produit, chacun avec ses propriétés.

Malgré ses limitations (pas de dates natives, pas de commentaires, pas de références circulaires), JSON excelle dans les échanges de données légères et structurées. Pour des besoins plus avancés, des extensions comme JSON Schema permettent de valider la structure des documents JSON.

Voici un exemple plus élaboré montrant une structure JSON typique pour une API :

{
  "utilisateur": {
    "id": 12345,
    "nom": "Dupont",
    "prénom": "Marie",
    "email": "marie.dupont@example.com",
    "profil": {
      "date_naissance": "1990-05-15",
      "ville": "Paris",
      "pays": "France"
    },
    "commandes": [
      {
        "id_commande": "CMD-001",
        "date": "2023-12-01",
        "montant": 149.99,
        "articles": [
          {"nom": "Livre JSON", "quantité": 1, "prix": 29.99},
          {"nom": "Cours JavaScript", "quantité": 2, "prix": 60.00}
        ]
      }
    ]
  }
}

Cet exemple illustre comment JSON peut représenter des données relationnelles complexes avec imbrication et tableaux. Chaque niveau ajoute de la structure sans complexité syntaxique excessive.

Application d'Arborescence JSON

Entrez un contenu JSON dans le champ ci-dessous, puis cliquez sur "Dessine" pour afficher l'arborescence sous forme de liste hiérarchique. Exemple :

{
    "library": {
        "books": [
            {
                "id": 1,
                "genre": "fiction",
                "title": "The Hobbit",
                "author": "J.R.R. Tolkien"
            },
            {
                "id": 2,
                "genre": "non-fiction",
                "title": "Sapiens",
                "author": "Yuval Noah Harari"
            }
        ]
    }
}
        

À lire :