Aller au contenu
Développement medium

Tout savoir sur JSON, syntaxe et usages

6 min de lecture

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.

  • 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

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 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é": valeur

Un 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": 35 associe une clé à un nombre.
  • "estEmploye": true associe une clé à un booléen.
  • "adresse" pointe vers un objet imbriqué.
  • "languesParlees" pointe vers un tableau de chaînes.

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 42 ou 3.14.
  • Booléen : true ou false.
  • null : l'absence de valeur.
  • Objet : une collection de paires clé-valeur entre {}.
  • Tableau : une liste ordonnée de valeurs entre [].

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.

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.

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 :

Fenêtre de terminal
# Valide et reformate un fichier (jq)
jq . data.json
# Équivalent avec Python
python3 -m json.tool data.json

Si 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 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.

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: 35 est du JavaScript, pas du JSON ; il faut "age": 35.
  • Valeurs non supportées : undefined, NaN ou 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.

  • 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 jq ou python3 -m json.tool, qui pointent l'erreur.
  • JSON est le format standard des API REST (application/json).

Ce site vous est utile ?

Sachez que moins de 1% des lecteurs soutiennent ce site.

Je maintiens +700 guides gratuits, sans pub ni tracking. Un soutien, même symbolique, m'aide à couvrir l'hébergement et à garder ces ressources gratuites. Merci pour votre appui.

Le formulaire ne s'affiche pas ? Ouvrir Ko-fi dans un onglet.

Abonnez-vous et suivez mon actualité DevSecOps sur LinkedIn