En une phrase
Le JSON est une manière textuelle de structurer des données, comme une liste ou un dictionnaire, ce qui le rend incroyablement facile à lire, écrire et échanger, aussi bien pour les ordinateurs que pour les humains.
Le problème qu'il résout
Imaginez le web du début des années 2000. Si vous vouliez que votre page web récupère de nouvelles données sans recharger toute la page (un nouveau concept super à la mode appelé AJAX), vous étiez probablement en train de vous débattre avec du XML. Le XML (eXtensible Markup Language) était le champion en titre de l'échange de données. Il était puissant, strict, et… franchement, un peu un boulet.
Un document XML est verbeux. Chaque morceau de donnée est emballé dans des balises ouvrantes et fermantes.
<user>
<id>123</id>
<name>Alex</name>
<isAdmin>true</isAdmin>
</user>
Ce n'est pas horrible, mais c'est massif. Plus important encore, le parser en JavaScript — le langage du navigateur — était une galère. Il fallait naviguer dans un Document Object Model (DOM) complexe, jonglant avec des nœuds, des attributs et du contenu textuel. On avait l'impression d'utiliser un marteau-pilon pour écraser une noix.
C'est là qu'intervient Douglas Crockford, un développeur travaillant pour ce qui allait devenir Yahoo!. Il a remarqué un truc génial : JavaScript avait déjà une manière intégrée et parfaitement fonctionnelle de définir des données structurées. Ça s'appelait la « notation littérale d'objet ».
// Ça, c'est juste du bon vieux JavaScript !
var user = {
"id": 123,
"name": "Alex",
"isAdmin": true
};
Crockford a réalisé que ce sous-ensemble de la syntaxe JavaScript était un format de données fantastique en soi. Il était léger, facile à lire pour les humains, et — c'était la fonctionnalité qui tue — trivial à parser pour JavaScript. On pouvait quasiment faire un eval() dessus (bien que pour des raisons de sécurité, on utilise maintenant des méthodes plus sûres comme JSON.parse()).
Il a formalisé ce format, lui a donné le nom de JavaScript Object Notation (JSON), et a créé un simple site web d'une page pour l'expliquer. Il résolvait le problème d'avoir besoin d'un format de données moins volumineux que le XML et natif à l'environnement web. Le JSON s'est répandu comme une traînée de poudre, devenant le langage de facto pour les API, les fichiers de configuration et d'innombrables autres applications. Il a gagné parce qu'il était simple, pratique et né du langage même qu'il était destiné à servir.
Comment ça marche sous le capot
À la base, le JSON n'est qu'un ensemble de règles pour écrire des données sous forme de texte. Pensez-y comme à un plan universel pour une structure de données. Il n'a que deux façons de structurer les choses et six types de données simples à mettre dedans.
Les briques de base : les types de données
L'élégance du JSON vient de son ensemble minimaliste de types de valeurs. Tout en JSON est l'un de ces types.
| Type | Exemple | Description |
|---|---|---|
| String | "Hello, world!" |
Une séquence de caractères Unicode, entourée de guillemets doubles. |
| Number | 42, -3.14, 2.99e8 |
Un nombre entier ou à virgule flottante. Pas de NaN ou d'Infinity. |
| Boolean | true, false |
Les valeurs logiques pour vrai et faux, toujours en minuscules. |
| Null | null |
Représente l'absence intentionnelle d'une valeur, toujours en minuscules. |
| Array | [1, "two", false] |
Une liste ordonnée de valeurs, placée entre crochets []. |
| Object | {"key": "value"} |
Une collection non ordonnée de paires clé/valeur, placée entre accolades {}. |
Et c'est tout. Pas de dates, pas de fonctions, pas de types spéciaux. Cette simplicité est une feature, pas un bug, car elle garantit que les données peuvent être comprises par pratiquement n'importe quel langage de programmation.
La structure : objets et tableaux
La vraie magie opère quand vous combinez ces briques de base.
Les Objets sont pour quand vous avez une collection de choses nommées. Les « clés » (les noms) doivent être des chaînes de caractères entre guillemets doubles. Les « valeurs » peuvent être n'importe lequel des six types de données, y compris un autre objet ou un tableau. C'est comme ça qu'on crée de la hiérarchie.
Les Tableaux (Arrays) sont pour quand vous avez une liste ordonnée de choses. L'ordre compte, et vous accédez aux éléments par leur position (index), en commençant par zéro.
Construisons un profil utilisateur simple. C'est un objet car il a des propriétés nommées comme name et email. L'une de ces propriétés, skills, est une liste, donc on utilise un tableau.
{
"userId": "u-9a8b7c",
"username": "CodeWizard",
"isActive": true,
"lastLogin": null,
"profile": {
"realName": "Dana Scully",
"location": "Washington, D.C."
},
"skills": [
"Forensic Pathology",
"Firearms",
"Rational Skepticism"
]
}
Vous voyez l'imbrication ? Un objet (profile) est une valeur à l'intérieur de l'objet principal. Un tableau (skills) est une autre valeur. Cette structure en arborescence peut être aussi profonde que nécessaire, vous permettant de modéliser des données incroyablement complexes.
En JavaScript, accéder à ces données est magnifiquement intuitif :
data.username vous donnerait "CodeWizard".
data.profile.realName vous donnerait "Dana Scully".
data.skills[0] vous donnerait "Forensic Pathology".
Cette correspondance directe avec les structures natives du langage est la raison pour laquelle les développeurs l'adorent.
Les règles du jeu : la syntaxe
Pour être du JSON valide, vous devez suivre quelques règles strictes. C'est cette rigueur qui le rend si fiablement parsable par une machine.
- Guillemets doubles uniquement : Toutes les clés et toutes les valeurs de type chaîne de caractères DOIVENT être entourées de guillemets doubles (
"). Les guillemets simples (') sont une erreur de syntaxe. - Pas de virgules finales : Une virgule est utilisée pour séparer les éléments dans un tableau ou les paires dans un objet. Vous ne pouvez pas avoir de virgule après le dernier élément.
// MAUVAIS ! Virgule en trop après `true` { "key1": "value1", "key2": true, } - Objets et tableaux : Les données sont structurées en objets (
{}) ou en tableaux ([]). Un document JSON valide peut être une valeur unique (comme la chaîne"hello"), mais c'est presque toujours un objet ou un tableau qui sert de conteneur de niveau supérieur. - Les espaces sont flexibles : Les espaces, tabulations et sauts de ligne en dehors des chaînes de caractères n'ont pas d'importance. Cela permet d'avoir à la fois des formats « jolis » indentés pour la lecture humaine et des formats « minifiés » sur une seule ligne pour un transfert réseau efficace.
Histoires vécues
Le fil d'actualité des réseaux sociaux
Une développeuse front-end, Maya, est chargée de construire le fil d'actualité à défilement infini pour un nouveau réseau social. Chaque fois que l'utilisateur s'approche du bas de la page, son code JavaScript doit demander plus de publications au serveur. Le serveur ne répond pas avec du HTML, mais avec des données pures. Il envoie un tableau JSON, où chaque élément est un objet représentant une publication. Cet objet contient le texte de la publication, le nom d'utilisateur de l'auteur, un lien vers sa photo de profil, le nombre de likes, et même un tableau imbriqué des premiers commentaires. Le code de Maya reçoit ce JSON propre, parcourt le tableau et crée dynamiquement le HTML pour chaque publication, l'ajoutant à la page.
La leçon : Le JSON est le sang qui irrigue les applications web dynamiques modernes, agissant comme un messager léger entre le cerveau du serveur et la présentation du navigateur.
La configuration d'un jeu
Un développeur de jeux indépendants, Léo, crée un jeu de rôle. Il doit gérer des centaines d'objets : épées, potions, armures, etc. Coder en dur les propriétés de chaque objet (nom, dégâts, poids, prix) directement dans le code C++ du jeu serait un cauchemar à équilibrer et à mettre à jour. À la place, il crée un fichier items.json. C'est un objet JSON géant où chaque clé est un ID d'objet (comme "longsword") et la valeur est un autre objet contenant toutes ses statistiques. Au lancement du jeu, il lit ce fichier et charge toutes les données des objets en mémoire. Pour rééquilibrer le jeu, il lui suffit de modifier le fichier texte, sans avoir à recompiler.
La leçon : Le JSON est un excellent format pour les fichiers de configuration, séparant les données d'une application de sa logique et les rendant facilement modifiables par des humains.
L'orchestre de microservices
Une ingénieure backend, Fatima, travaille sur un système composé de dizaines de microservices. Un « service utilisateur » gère les comptes utilisateurs, un « service de commandes » gère les achats, et un « service de notification » envoie des e-mails. Lorsqu'un utilisateur passe une commande, le service de commandes doit confirmer son adresse de livraison. Il n'interroge pas directement la base de données ; à la place, il fait une requête HTTP à l'endpoint de l'API du service utilisateur, comme GET /api/users/123/address. Le service utilisateur répond avec un simple objet JSON : {"street": "123 Main St", "city": "Anytown"}. Le service de commandes le parse, valide la commande, puis envoie une requête au service de notification (également avec un payload JSON) pour envoyer le reçu par e-mail.
La leçon : Dans un système distribué, le JSON sert de contrat universel et agnostique du langage, permettant à des services écrits en Go, Python et Node.js de communiquer entre eux sans accroc.
Erreurs et pièges courants
- Les virgules finales : C'est l'erreur de validation la plus courante. Les tableaux et objets JavaScript sont souvent plus permissifs, mais le JSON est strict : pas de virgule après le dernier élément d'une collection.
- Les commentaires : Le JSON n'a pas de commentaires. Point barre. Les développeurs habitués à
//ou/* */essaient souvent d'en ajouter, ce qui invalide immédiatement le JSON. Le « hack » officiel consiste à ajouter une clé comme"_comment": "Votre note ici", qu'un parser traitera simplement comme une autre donnée. - Guillemets simples vs. guillemets doubles : Toutes les clés et toutes les chaînes de caractères doivent utiliser des guillemets doubles (
"). Si vous venez des dictionnaires Python ou de certains guides de style JavaScript, vous êtes peut-être habitué aux guillemets simples, mais ils sont interdits en JSON. undefinedn'existe pas : En JavaScript, une propriété d'objet manquante estundefined. Le JSON n'a aucun concept de cela. Pour représenter une valeur manquante ou vide, vous devez utiliser explicitementnull.- Guillemets non échappés : Si la valeur de votre chaîne de caractères doit contenir un guillemet double, vous devez l'échapper avec une barre oblique inverse (
\). Oublier de le faire ({"quote": "She said "Hello""}) cassera la structure. La bonne façon est{"quote": "She said \"Hello\""}.
Pourquoi c'est sur votre radar
Dans le développement logiciel moderne, le JSON n'est pas juste « sur le radar » ; c'est le radar. C'est le format par défaut pour tellement de tâches critiques que ne pas le connaître, c'est comme être un chef qui ne sait pas ce qu'est le sel.
Vous devriez penser au JSON à chaque fois que :
- Vous construisez ou consommez une API web.
- Vous avez besoin d'un fichier de configuration pour une application.
- Vous devez stocker des données structurées dans un simple fichier texte ou une base de données NoSQL comme MongoDB.
- Vous envoyez des données d'un processus côté serveur à une application JavaScript côté client.
- Vous avez besoin d'un format simple et lisible par l'homme pour sérialiser un objet à envoyer sur un réseau ou à sauvegarder sur un disque.
En gros, si vous avez besoin que deux programmes différents se parlent, ou si vous avez besoin de séparer vos données de votre code, le JSON est presque toujours votre première et meilleure réponse.
Pour aller plus loin
- JSON.org : La spécification originale d'une page par Douglas Crockford. Un chef-d'œuvre de documentation concise.
- RFC 8259: The JavaScript Object Notation (JSON) Data Interchange Format : Le standard internet officiel et formel. C'est dense, mais ça fait autorité.
- MDN Web Docs: JSON : Un excellent guide pratique pour les développeurs web, centré sur l'objet
JSONintégré de JavaScript. - Wikipédia : JSON : Pour une vue d'ensemble de son histoire, de ses alternatives et de son rôle dans le monde de la programmation.
- Google TechTalks: The JSON Saga : Une vidéo de Douglas Crockford lui-même expliquant l'histoire et la philosophie de conception derrière le JSON. Un visionnage amusant et instructif (en anglais).