Aller au contenu principal

Qu’est-ce que le JSON

Le JSON (JavaScript Object Notation) est un format texte pour les données structurées, défini par la RFC 8259. Il représente les objets comme des paires clé/valeur et les listes comme des tableaux, avec six caractères de ponctuation et un système de types strict. Chaque API web, outil de configuration et base de données d’aujourd’hui sait le lire — et il est délibérément assez simple pour s’apprendre en un après-midi.

100 % local

Qu’est-ce que le JSON en clair

Le JSON est le format dans lequel arrivent les données. Quand une application météo affiche les prévisions de demain, qu’un tableur exporte des enregistrements ou qu’un fichier de configuration accompagne un service, le texte qui circule entre ces systèmes est presque toujours du JSON : des accolades portant des clés et des valeurs, des crochets portant des listes, et un petit ensemble de règles sur les chaînes et les nombres que chaque langage de programmation accepte.

Il a été extrait de la syntaxe des littéraux d’objets de JavaScript vers 2001, puis normalisé d’abord comme RFC 4627, révisé ensuite en RFC 8259, la version en vigueur aujourd’hui aux côtés de la norme identique ECMA-404. Le nom dit encore JavaScript, mais le format est neutre vis-à-vis des langages par conception — Python, Java, Go, C#, SQL et votre éditeur de texte le parlent tous couramment, et c’est précisément pourquoi il est devenu la façon par défaut d’échanger des données entre programmes.

Ce guide explique de quoi le JSON se compose réellement — ses six types de données, ses deux conteneurs, ses règles d’échappement — avec, pour chacun, des exemples copiables. Chaque fois qu’une explication débouche sur une étape pratique, l’outil lié s’exécute dans votre navigateur : vous pouvez formater, valider ou convertir l’exemple même que vous venez de lire, sans rien installer.

La façon la plus rapide d’intégrer les règles de syntaxe ci-dessous est de les enfreindre exprès et d’observer la réaction d’un analyseur — le formateur JSON vous montrera la ligne et la colonne exactes de chaque erreur.

Quand vous voudrez toutes les règles sur une seule page de référence, l' antisèche de la syntaxe JSON condense ce guide en une table de consultation.

Les deux conteneurs : objets et tableaux

Tout, dans le JSON, se construit à partir de deux structures. Un objet est un ensemble non ordonné de paires clé/valeur enveloppées dans des accolades — les clés sont toujours des chaînes, les valeurs peuvent être n’importe quelle valeur JSON, et les paires sont séparées par des virgules. Un tableau est une liste ordonnée de valeurs enveloppée dans des crochets, et ses valeurs peuvent mêler tous les types.

Un objet (paires clé/valeur)

{
  "name": "Ada Lovelace",
  "born": 1815,
  "mathematician": true
}

Un tableau (valeurs ordonnées)

[
  "analytical engine",
  1843,
  null
]

Les six types de données

Quatre sont des scalaires — string, number, boolean et null — et deux sont les conteneurs ci-dessus. Les règles qui surprennent les débutants sont peu nombreuses mais strictes : les chaînes sont toujours entre guillemets doubles (les guillemets simples sont invalides), les nombres n’ont pas besoin de guillemets et ne peuvent pas s’écrire en hexadécimal, les booléens sont exactement les tokens minuscules true et false, et null est une valeur à part entière qui signifie vide délibérément.

TypeExemplesRègle à retenir
string"hello", "café", "é"Guillemets doubles uniquement ; échapper " et \ à l’intérieur
number42, -3.14, 2.1e10Pas d’hexadécimal, pas de NaN, pas de zéros en tête
booleantrue, falseMinuscules uniquement — True est invalide
nullnullSignifie vide intentionnellement, pas zéro
object{"key": "value"}Les clés sont des chaînes ; virgules finales interdites
array[1, "two", null]Ordre conservé ; mélanges autorisés

L’échappement : ce qui peut vivre dans une chaîne

Dans une chaîne, deux caractères doivent être échappés partout où ils apparaissent : le guillemet double (sous la forme \") et l’antislash (sous la forme \\). Six autres séquences d’échappement existent pour les caractères de contrôle — \n nouvelle ligne, \t tabulation, \r retour chariot, \b retour arrière, \f saut de page, et \/ pour la barre oblique, ce qui est légal mais facultatif. Tout autre caractère peut apparaître littéralement en UTF-8, ou comme séquence d’échappement \uXXXX pour son point de code Unicode — les deux formes signifient exactement la même chaîne pour un analyseur.

Forme échappée

"path": "C:\\Users\\ada"
"quote": "she said \"hi\""
"emoji": "\ud83d\ude00"

Ce que délivre un analyseur

path:   C:\Users\ada
quote:  she said "hi"
emoji:  😀

Espaces, formatage et pourquoi on formate

Entre la ponctuation structurelle, le JSON n’autorise que quatre caractères d’espacement : l’espace, la tabulation, la nouvelle ligne et le retour chariot. Cette liberté est ce qui rend le formatage possible — le même document peut être une seule ligne illisible sur le fil et un arbre indenté dans votre éditeur, et tous deux sont, octet pour octet, les mêmes données pour un analyseur. Le formatage ne change rien au sens, et c’est pourquoi l’outil de formatage peut s’exécuter sans risque sur n’importe quelle charge utile, et pourquoi le JSON minifié est le choix standard pour le transport.

  • Pas de commentaires : la RFC 8259 les a retirés délibérément, après des divergences bien réelles entre analyseurs. JSONC est l’extension non officielle que certains outils acceptent.
  • Pas de virgules finales : [1, 2, 3,] est invalide, si amical qu’il paraisse.
  • Clés dupliquées : les analyseurs conservent soit la première, soit la dernière — la RFC 8259 laisse ce choix aux implémentations, et c’est pourquoi les doublons constituent un bug même quand l’analyse passe.
  • N’importe quel niveau racine : n’importe quelle valeur peut constituer un document entier — un tableau de nombres est du JSON complet.

Où le JSON s’utilise — et où il ne s’utilise pas

Le JSON règne sur trois territoires : les corps de requêtes et de réponses d’API, la configuration structurée où l’absence de commentaires ne se regrette pas, et les données au repos dans les bases de données documentaires. Il partage le fil à contrecœur avec deux voisins — les formats binaires comme protobuf, qui gagnent en taille et en vitesse quand les deux bouts partagent un schéma, et YAML, qui gagne en facilité d’édition à la main pour la configuration des ops. Bien comprendre le JSON n’est donc pas une compétence parmi d’autres ; c’est le prérequis pour lire ces deux voisins, car YAML 1.2 analyse le JSON et la plupart des schémas binaires se documentent avec des exemples JSON.

Questions fréquentes

Que signifie JSON ?

JavaScript Object Notation. La syntaxe a été extraite des littéraux d’objets de JavaScript par Douglas Crockford vers 2001, mais le format lui-même est neutre : la RFC 8259 le définit comme un format texte que tout langage de programmation peut produire et analyser, et c’est pourquoi il est devenu le format d’échange universel plutôt qu’une fonctionnalité de JavaScript.

Le JSON est-il un langage de programmation ?

Non — c’est un format de données sans sémantique d’exécution. Il ne peut exprimer ni logique, ni variables, ni fonctions, seulement de la structure : des objets, des tableaux et quatre types scalaires. La rigueur est délibérée ; la grammaire de la RFC 8259 tient sur environ une page, et c’est cette propriété qui a permis à chaque langage de l’implémenter à l’identique.

Quelle est la différence entre le JSON et les objets JavaScript ?

Trois, bien visibles : le JSON exige des clés entre guillemets doubles, interdit les virgules finales, et n’a ni undefined, ni fonctions, ni commentaires. Un littéral d’objet JavaScript comme {name: 'ada'} n’est pas du JSON valide — {"name":"ada"}, si. Inversement, tout document JSON valide s’analyse comme un objet JavaScript, et c’est pourquoi on confond si souvent les deux.

Pourquoi le JSON n’autorise-t-il pas les commentaires ?

Douglas Crockford les a retirés délibérément : les premières négociations sur le format ont montré des éditeurs entassant des directives d’analyse dans les commentaires, ce qui cassait l’interopérabilité. Si vous avez besoin d’annotation, la convention veut une clé sœur telle que "//" ou "_comment", ou JSONC quand la chaîne d’outils le prend en charge — mais le JSON de transport reste sans commentaires par conception.

Comment vérifier que mon JSON est valide ?

Collez-le dans un validateur — le validateur JSON de ce site analyse selon la RFC 8259 en local et signale la ligne et la colonne exactes de la première erreur de syntaxe, dans votre navigateur. Les échecs les plus courants : guillemets simples, virgules finales, clés sans guillemets, et guillemets typographiques collés depuis un traitement de texte.

Le JSON est-il sûr à analyser ?

Analyser du texte JSON est sûr ; ce qu’un analyseur vous remet peut rester dangereux si vous l’exécutez. Deux pièges classiques : employer le eval de JavaScript au lieu de JSON.parse (eval exécute du code), et l’expansion d’entités sans limite dans les outils influencés par XML. Un analyseur conforme aux normes, comme ceux des navigateurs, a des limites de profondeur et de taille, et n’exécute jamais rien.

Où puis-je lire les normes citées ici ?

  • RFC 8259 — Le format d’échange de données JavaScript Object Notation (JSON)
  • RFC 4627 — Le type de média application/json pour JavaScript Object Notation (JSON) (obsolète ; la norme JSON en vigueur est la RFC 8259)
  • ECMA-404 — La syntaxe d’échange de données JSON
  • YAML 1.2 — Spécification YAML, version 1.2 (révision 1.2.2)