XML donnait aux données machine à machine une grammaire de balises, d'espaces de noms et de schémas — expressive, et assez lourde pour qu'envoyer un simple enregistrement implique d'écrire un document. JSON a pris le chemin inverse : comme le dit sa page d'accueil, JSON est bâti sur deux structures, une collection de paires nom/valeur et une liste ordonnée de valeurs, écrites selon les conventions déjà familières aux programmeurs de C, C++, C#, Java, JavaScript, Perl et Python — ce qui explique précisément pourquoi ces pages le qualifient de langage idéal pour l'échange de données.

La filiation du format et son émancipation de JavaScript apparaissent toutes deux dans sa normalisation. La RFC 8259, « The JavaScript Object Notation (JSON) Data Interchange Format », décrit un format d'échange de données léger, textuel et indépendant des langages, dérivé des littéraux de JavaScript tels que définis dans ECMAScript — reconnaissable par tous les navigateurs web, mais n'appartenant à aucun d'eux. Le groupe de travail JSON de l'IETF l'a fait passer par la RFC 7159 jusqu'à la RFC 8259, faisant de JSON une norme Internet en décembre 2017.

La conséquence fut un déplacement. Là où les API négociaient autrefois des schémas XML, elles renvoient désormais des objets et des tableaux que tout programmeur peut lire d'un coup d'œil — un format qui n'a atteint le processus de normalisation qu'après son adoption, au lieu d'avoir besoin du processus de normalisation pour recruter des adoptants.

Deux structures suffisent pour toute API

Deux structures — objets et tableaux — se composent en presque toutes les formes de données que les programmes échangent entre systèmes, si bien que le format n'a eu besoin d'aucun mécanisme d'extension.

Dériver la syntaxe des littéraux JavaScript a rendu le format immédiatement lisible pour la population de développeurs à la croissance la plus rapide, tandis que l'indépendance des langages maintenait toutes les autres communautés à l'intérieur.

Aucun schéma ni vocabulaire de balises n'était requis, si bien qu'une API pouvait modifier sa charge utile sans coordonner une définition de type de document.

La normalisation par l'IETF après adoption a scellé l'interopérabilité sans imposer le poids qui rendait son prédécesseur peu attrayant.

Un format l'emporte par soustraction : moins de constructions signifie moins de désaccords, et un format de données que tout programmeur peut lire sans documentation élimine la résistance qui a bloqué des prédécesseurs plus riches.

La RFC 8259 a fait de JSON une norme Internet officielle en décembre 2017, date à laquelle il était déjà devenu le format d'échange par défaut pour les API web, la configuration et les données de journalisation — un cas rare d'un format normalisé par un groupe de travail entérinant le comportement existant du monde.

VÉRIFIEZ LES SOURCES

Les sources

  1. RFC 8259: The JavaScript Object Notation (JSON) Data Interchange Format IETF (Datatracker) · datatracker.ietf.org ·
  2. Introducing JSON json.org · json.org