JSON

Un article de Wikipédia, l'encyclopédie libre.

JSON (JavaScript Object Notation) est un format de données générique. Il utilise la notation des objets JavaScript pour transmettre de l'information structurée. Léger et au format texte, il est dérivé de l’écriture des langages standards de type ECMAScript (norme ISO/IEC 16262) comme JavaScript par exemple. Inscrit au Network Working Group de l’IETF sous la RFC 4627.

Sommaire

[modifier] Exemple

Format JSON :

{menu: {
   id: "file",
   value: "File",
   popup: {
     menuitem: [
       {value: "New", onclick: "CreateNewDoc()"},
       {value: "Open", onclick: "OpenDoc()"},
       {value: "Close", onclick: "CloseDoc()"}
     ]
   }
 }}

À titre de comparaison, même exemple en XML :

<menu id="file" value="File">
   <popup>
     <menuitem value="New" onclick="CreateNewDoc()" />
     <menuitem value="Open" onclick="OpenDoc()" />
     <menuitem value="Close" onclick="CloseDoc()" />
   </popup>
 </menu>

[modifier] Structure d'un document JSON

Un document JSON ne comprend que deux éléments structurels :

  • des ensembles de paires nom / valeur ;
  • des listes ordonnées de valeurs.

Ces mêmes éléments représentent 3 types de données :

[modifier] Avantages

Ces types de données sont suffisamment génériques et abstraits pour, d'une part, pouvoir être représentés dans n'importe quel langage de programmation, d'autre part, pouvoir représenter n'importe quelle donnée concrète.

Le principal avantage de JSON est donc qu'il est très simple à mettre en oeuvre par un programmeur tout en étant complet.

Au rang des avantages on peut également citer :

  • il est généralement considéré comme très peu verbeux et donc facilement lisible aussi bien par un humain que par une machine ;
  • il est très facile à apprendre car sa syntaxe est extrêmement réduite et non-extensible (bien que ne souffrant que peu de limitations) ;
  • ses types de données sont bien connus et extrêmement simples à décrire.

[modifier] Utilisation

JSON est indépendant de tout langage de programmation, bien qu'utilisant une notation JavaScript. Il sert donc à faire communiquer des applications dans un environnement hétérogène : entre applications différentes, entre systèmes d'exploitation différents, entre langages de programmation différents.

Il est notamment utilisé comme langage de transport de données par AJAX et les Services Web, du fait de sa portabilité (qui facilite l'inter-opérabilité qu'ils visent), de sa simplicité et de sa facile intégration à JavaScript. Cependant, d'autres solutions sont bien sûr possibles, comme XML. Le type MIME application/json est utilisé pour le transmettre par le protocole HTTP

Vis-à-vis de JavaScript, un document JSON représente un objet, d'où son nom. Il est donc techniquement beaucoup plus facile à interpréter qu'un texte en XML qui, lui, demande des techniques souvent plus lourdes comme le parcours de l'arbre DOM représenté par le document.

JSON est par exemple proposé comme langage de retour alternatif des Services Web de Yahoo! et del.icio.us. Yahoo! le recommande également pour faire communiquer le client et le serveur via sa bibliothèque AJAX (nommée YUI).

Mais une fois de plus, rien n'oblige à utiliser JavaScript quand on veut communiquer par JSON. Ainsi, le site officiel présente-t-il (en août 2007) des solutions d'intégration de JSON pour 33 langages de programmation.

Ceci tend également à démontrer que JSON peut être utilisé dans un cadre bien plus large que la communication par le Web. Comme autres usages possibles, on peut citer par exemple :

  • sérialisation et déserialisation d'objets ;
  • encodage de documents ;
  • fichiers de configuration.

[modifier] Évaluation

En JavaScript, il est très simple d'évaluer une expression JSON pour la transformer en objet natif :

var donnees = eval('('+donnees_json+')');

Cette méthode comporte toutefois des risques car la chaîne de caractères donnees_json peut contenir n'importe quel code JavaScript. Il existe une méthode plus sûre qui consiste à parser la chaîne de caractères donnees_json, seule solution disponible dans les autres langages de programmation à l'exception de Python, la syntaxe de JSON correspondant à ses deux types principaux : les listes et les dictionnaires.

[modifier] Performances

Du point de vue du temps de traitement, évaluer une expression JSON en JavaScript est à peu de choses près aussi efficace que traiter son équivalent XML. Par contre, parser la même expression JSON est plus long : les traitements à effectuer sont plus intensifs.

[modifier] Liens externes