Format JSON : JavaScript Object Notation

Ressource Plume
  • Création ou MAJ importante : 16/07/10
  • Correction mineure : 22/07/10
  • Auteur de la fiche : Pierre Gambarotto (INPT Enseeiht)
  • Fiches logiciel PLUME connexes : Firebug
Mots clés

 

JSON est l'acronyme de JavaScript Object Notation. C'est un format texte qui permet de représenter des données et de les échanger facilement à l'instar d'XML. JSON est un sous ensemble d'ECMAScript (JavaScript) et est décrit dans le RFC 4627. Ce sous ensemble de JavaScript permet de décrire le modèle objet de JavaScript. Deux types de structures sont disponibles :

Les valeurs peuvent être des types suivants : booléen, chaîne de caractères, nombre, ou valeur nulle. (boolean, string, number, null), ou une des structures ci-dessus. La syntaxe est celle de JavaScript, simpliste. Voici par exemple la description d'un utilisateur avec une adresse et des numéros de téléphone :

{ 
"nom":"Bob",
"age":34,
"addresse": { "rue":"avenue Grande", "ville":"Rio", "code":86945},
"telephone":[ {"type":"maison", "numero" : 123456}, {"type":"portable", "numero": 654321} ]
}

L'équivalent en XML serait :

<utilisateur nom="Bob" age="34"> 
<adresse>
<rue>avenue Grande</rue>
<ville>Rio</ville>
<code>86945</code>
</adresse>
<telephones>
<telephone type="maison">123456</telephone>
<telephone type="portable">654321</telephone>
</telephones>
</utilisateur>

En comparaison, le format JSON ne fait pas de différence entre attribut et élément comme en XML. Il est donc moins sujet à variation, et est globalement plus concis et plus lisible. Les valeurs sont typées alors qu'en XML on ne dispose que de chaînes de caractères.

Au delà de la lisibilité, l'avantage majeur est de pouvoir facilement intégrer des objets JSON dans une application JavaScript. Par exemple si user désigne l'utilisateur représenté ci-dessus :

var bob = eval("(" + user + ")");

Les butineurs web récents comme Firefox 3.5 disposent d'un analyseur syntaxique JSON intégré qui permettent moins de dérive que l'évaluation brute par eval:

var bob = JSON.parse(user);

L'utilisation d'une bibliothèque JavaScript permettant d'enrober les différences de gestion entres les navigateurs est recommandée pour éviter des problèmes de portabilité.

Références :