JSON

1. Présentation

XML est un outil reconnu et standardisé pour l'échange d'informations entre systèmes. Cependant d'autres langages existent. En particulier, le langage JSON revendique aussi cette propriété. Ce langage est très utilisé dans le cadre d'applications Web, en particulier celles utilisant Javascript, langage dont il est issu.

2. Syntaxe

JSON est un format de données textuel, générique dont la description est extrêment simple (http://www.json.org). Il est dérivé de la notation des objets et des tableaux du langage ECMAScript. Il est décrit par la RFC 4627 de l’IETF (http://tools.ietf.org/html/rfc4627).

JSON est en fait la composition de deux entités seulement. La première est une structure de type tableau associatif (ensemble de paires clef/valeur) qui décrit des objets en Javascript. Elle est donc de la forme : {‘‘nom’’ : valeur, ‘‘nom’’ : valeur, ‘‘nom’’ : valeur, ...}. Le diagramme suivant (tiré de http://www.json.org/json-fr.html) décrit de manière plus complète cette structure.

La seconde structure décrit une liste de valeurs (un tableau indexé Javascript classique). Elle est de la forme : [ valeur, valeur, valeur, ... ]. Le diagramme suivant (tiré de http://www.json.org/json-fr.html) décrit de manière plus complète cette structure.

Ces structures correspondent en fait à la sérialisation des objets et des tableaux Javascript. En cas de transfert (HTTP par exemple), le type MIME associé est "application/JSON". En javascript, lorsqu'un document JSON est reçu (par XMLHTTPRequest par exemple), il suffit d'écrire "var object = eval( ‘(‘+req.responseText+’)’ );" pour transformer le document en structures de ce langage.

3. JSON vs. XML

L'exemple suivant présente les mêmes informations structurées d'abord en JSON puis en XML.

L’avantage sur XML est que le flux est plus petit et l’exécution plus rapide, car directement en javascript (pas besoin de manipuler le flux XML dans un objet DOM par exemple). Le désavantage est que le format est plus dépendant de javascript et qu’il s’agit réellement de code javascript exécuté par le navigateur (avec des risques de sécurité par injection de code javascript par exemple). L'information est moins pérenne et ne peut pas être exploitée telle qu'elle dans une base de donnée (relationnelle et, bien sûr, XML). De plus, lorsque son origine est un service indépendant, l'absence de schéma ne permet pas de s'assurer de la bonne construction du document (absence de validation). Enfin, il n'y a pas de différentiation contenu/attribut ainsi que la possibilité de contrôler, par le schéma, la forme des données. Il n'est donc pas possible d'effectuer des recherches par identifiants par exemple.

4. Conclusion

Les deux standard n'ont pas exactement les mêmes caractéristiques, mais restent assez proches du point de vue de l'organisation des données. Par contre, XML semble tout de même plus intéressant à long terme ou lorsque l'origine des informations n'est pas sûr. Du coup, sauf en cas de contraintes en termes de volumes de données, XML reste le meilleur choix.

Retour