Format JSON : ce que c’est, comment il est structuré et quel est son lien avec les API

Lorsque deux applications informatiques doivent échanger des données structurées, elles ont besoin d'un format commun qui soit léger, simple et compréhensible pour les deux systèmes (et si possible aussi pour les êtres humains).
Aujourd'hui, ce format est presque toujours le JSON. Né au début des années 2000 pour simplifier l'échange de données au sein des applications web sans alourdir le réseau, il est devenu le standard des API REST, de la gestion des fichiers de configuration et du stockage des données dans plusieurs bases de données.
JSON est l'acronyme de JavaScript Object Notation. C'est un format textuel de structuration et d'échange de données, facile à lire aussi bien pour les êtres humains que pour les machines.
Le JSON a été décrit au début des années 2000 par Douglas Crockford. C'est Crockford lui-même qui, en avril 2001, a envoyé le premier message JSON, adressé à Chip Morningstar, son collègue chez Electric Communities.
Bien qu'il repose sur un sous-ensemble de JavaScript (Standard ECMA-262), le JSON est un format texte totalement indépendant du langage de programmation. Il utilise toutefois des conventions bien connues de quiconque travaille avec C et C++, Java, Perl, Python et d'autres langages de programmation.
Le JSON est devenu un standard ECMA en 2013 et a été mis à jour pour la dernière fois en 2017, avec la publication de la norme ISO/IEC 21778.
Un fichier JSON se présente comme un fichier texte basé sur deux structures fondamentales :
À l'intérieur du fichier, les clés (ou noms) doivent toujours être entourées de guillemets doubles (par exemple : "nom"). Les valeurs et les paires clé-valeur sont séparées par une virgule. Et à l'intérieur de l'objet, la clé est suivie de deux-points, qui introduisent la valeur correspondante.
Un fichier JSON peut par exemple se présenter ainsi :
{
"nom": "Marco",
"age": 30,
"etudiant": false,
"interets": ["programmation", "lecture", "voyages"],
"adresse": {
"ville": "Rome",
"code_postal": "00100"
},
"telephone": null
}
En termes de valeurs, le format JSON prend en charge quelques types de données fondamentaux :
Quant aux chaînes de caractères, elles peuvent être de tout type. Le standard ECMA actuel indique que :
« La syntaxe JSON n'impose aucune restriction sur les chaînes utilisées comme noms, n'exige pas que les chaînes de noms soient uniques et n'attribue aucune signification à l'ordre des paires nom/valeur. »
Comme il s'agit d'un format léger, lisible par les humains (human readable text) et pris en charge par les principaux langages de programmation, le JSON est devenu le format de données par défaut des API REST, mais aussi des fichiers de configuration et de plusieurs bases de données, comme MongoDB et PostgreSQL. En somme, il est utilisé partout où deux programmes échangent des données structurées.
Dans les API REST en particulier, le serveur envoie du JSON dans le corps de la réponse et l'identifie avec l'en-tête Content-Type: application/json.
Dans ce contexte, le format est utilisé de manière asymétrique selon l'opération :
Dans les deux cas, le corps (body) des messages échangés entre client et serveur est entièrement structuré dans ce format.