JSON (JavaScript Object Notation) est le format léger qui sert à échanger des données entre un client et un serveur, à configurer des outils et à stocker de l'information structurée. Il repose sur deux structures simples, les objets et les tableaux, lisibles par un humain comme par une machine. Ce guide explique sa syntaxe, comment valider et formater vos données, et les pièges qui invalident un fichier JSON.
Ce que vous allez apprendre
Section intitulée « Ce que vous allez apprendre »- La syntaxe JSON : clés, valeurs, objets et tableaux
- Les six types de données autorisés
- Comment valider et formater du JSON
- Les pièges courants qui rendent un JSON invalide
Un format né pour remplacer XML
Section intitulée « Un format né pour remplacer XML »JSON a été formalisé en 2001 par Douglas Crockford comme une alternative légère à XML, alors dominant pour l'échange de données. Là où XML impose un balisage verbeux, JSON se contente d'accolades, de crochets et de guillemets, ce qui réduit la taille des messages et accélère leur traitement.
Son nom vient de JavaScript, dont il reprend la notation littérale des objets. Mais JSON est indépendant de tout langage : aujourd'hui, pratiquement chaque langage de programmation sait le lire et l'écrire nativement. C'est cette universalité qui en a fait le format de référence des API REST et des fichiers de configuration.
La syntaxe de JSON
Section intitulée « La syntaxe de JSON »Le couple clé-valeur
Section intitulée « Le couple clé-valeur »La brique de base de JSON est la paire clé-valeur. La clé est toujours une chaîne entre guillemets doubles ; la valeur peut être de plusieurs types.
"clé": valeurUn objet complet rassemble plusieurs paires entre accolades :
{ "nom": "Dupont", "age": 35, "estEmploye": true, "adresse": { "ville": "Lyon", "codePostal": "69000" }, "languesParlees": ["français", "anglais", "espagnol"]}Dans cet exemple :
"nom": "Dupont"associe une clé à une chaîne."age": 35associe une clé à un nombre."estEmploye": trueassocie une clé à un booléen."adresse"pointe vers un objet imbriqué."languesParlees"pointe vers un tableau de chaînes.
Les six types de données
Section intitulée « Les six types de données »JSON n'autorise que six types, ce qui le rend prévisible :
- Chaîne : du texte Unicode entre guillemets doubles, par exemple
"Bonjour". - Nombre : entier ou décimal, sans guillemets, par exemple
42ou3.14. - Booléen :
trueoufalse. - null : l'absence de valeur.
- Objet : une collection de paires clé-valeur entre
{}. - Tableau : une liste ordonnée de valeurs entre
[].
Objets et tableaux
Section intitulée « Objets et tableaux »L'objet (entre accolades {}) regroupe des paires clé-valeur non ordonnées. Le tableau (entre crochets []) est une liste ordonnée de valeurs séparées par des virgules :
["pomme", "banane", "cerise"]Un tableau peut mélanger les types et contenir des objets ou d'autres tableaux. C'est en imbriquant objets et tableaux que JSON représente des structures complexes, comme la réponse d'une API listant des utilisateurs et leurs commandes.
Les caractères spéciaux
Section intitulée « Les caractères spéciaux »Certains caractères doivent être échappés avec une barre oblique inverse (\) à l'intérieur d'une chaîne :
{ "citation": "Il dit, \"Bonjour !\"", "chemin": "C:\\Documents\\Nouveau", "ligne": "Première\nSeconde"}Les principaux échappements sont \" (guillemet), \\ (barre oblique inverse), \n (nouvelle ligne) et \t (tabulation). Oublier un échappement casse la chaîne et invalide tout le document.
Valider et formater du JSON
Section intitulée « Valider et formater du JSON »Une seule virgule ou un guillemet manquant rend un fichier JSON inexploitable. Deux réflexes évitent ces blocages : la validation (le JSON est-il syntaxiquement correct ?) et le formatage (est-il lisible ?).
En ligne de commande, l'outil de référence est jq, qui valide, formate et transforme du JSON. La bibliothèque standard de Python fournit aussi un validateur rapide :
# Valide et reformate un fichier (jq)jq . data.json
# Équivalent avec Pythonpython3 -m json.tool data.jsonSi le fichier est invalide, les deux affichent la ligne et la colonne de l'erreur, ce qui accélère le diagnostic. Côté éditeur, VS Code, IntelliJ et la plupart des IDE signalent les erreurs JSON en direct et reformatent à la demande. Pour un contrôle ponctuel, des validateurs en ligne comme JSONLint font le même travail dans le navigateur.
JSON dans les API
Section intitulée « JSON dans les API »JSON est le format dominant des API REST. Quand votre navigateur ou une application mobile interroge un serveur, la réponse arrive presque toujours en JSON, sous l'en-tête Content-Type: application/json. Sa structure flexible représente naturellement des entités (un utilisateur, une commande) et leurs relations, et tous les langages savent la désérialiser en objets natifs.
C'est pourquoi un développeur passe une bonne partie de son temps à lire et produire du JSON : réponses d'API, fichiers de configuration (package.json, tsconfig.json), ou logs structurés.
Pièges courants
Section intitulée « Pièges courants »Ces erreurs invalident un JSON et reviennent sans cesse :
- Virgule finale après le dernier élément d'un objet ou d'un tableau : interdite.
- Guillemets simples : JSON exige des guillemets doubles, pour les clés comme pour les chaînes.
- Commentaires : JSON n'en accepte aucun (
//et/* */sont invalides). - Clé sans guillemets :
age: 35est du JavaScript, pas du JSON ; il faut"age": 35. - Valeurs non supportées :
undefined,NaNou une fonction n'existent pas en JSON.
En cas de doute, passez le fichier dans jq ou python3 -m json.tool : l'erreur pointe la position exacte.
À retenir
Section intitulée « À retenir »- JSON repose sur deux structures : l'objet (
{}) et le tableau ([]). - Les clés et les chaînes sont toujours entre guillemets doubles.
- Seuls six types sont autorisés : chaîne, nombre, booléen, null, objet, tableau.
- La virgule finale est interdite, contrairement à JavaScript.
- Validez et formatez avec
jqoupython3 -m json.tool, qui pointent l'erreur. - JSON est le format standard des API REST (
application/json).