JSON

par 2 contributeurs :

JSON (JavaScript Object Notation) est un format d'échange de données. Il ressemble fortement à un sous-ensemble de la syntaxe JavaScript, bien que ce ne soit pas exactement un sous-ensemble strict. (Voir la page JSON de la Référence JavaScript pour de plus amples détails.) Ce langage est utile pour les applications écrites en JavaScript comme les sites web ou les extensions. Par exemple, on peut stocker des informations dans un cookie en JSON ou bien enregistrer des préférences avec un objet JSON.

JSON permet de représenter des nombres, des booléens, des chaînes de caractères, la valeur null, des tableaux (qui sont des séquences ordonnées de valeurs) et des objets (un ensemble de correspondances chaîne-valeur) composés de ces valeurs (ou d'autres tableaux ou objets). Il ne permet pas, nativement, de représenter des données plus complexes comme les fonctions, les expressions rationnelles, les dates ou autre. (Les objets Date sont traduits vers une chaîne de caractères selon un format ISO, cela permet pour certains cas, d'assurer le transport de ces données.)  Si vous avez besoin de préserver ces valeurs et de représenter des valeurs d'autres types de données, vous pouvez les transformer lors de la conversion en chaîne de caractères et/ou les re-transformer avant de les convertir en objets JavaScript.

Documentation

L'objet JSON
L'objet JSON contient des méthodes pour convertir des valeurs en JavaScript Object Notation (JSON) et pour convertir des données JSON en valeurs JavaScript.
Utiliser l'objet natif JSON
Cet article aborde l'objet natif JSON ajouté à Gecko 1.9.1. qui est conforme à ECMAScript 5.
JSONPath
JSONPath permet d'utiliser une syntaxe semblable à XPath pour parcourir les structures JSON. Ce n'est pas un outil standard mais il permet de parcourir les structures JSON sans avoir besoin de les convertir en XML.
Télécharger du JSON et du JavaScript avec les extensions
Une pratique courante pour les extensions consiste à utiliser XMLHttpRequest (ou d'autres mécanismes) pour télécharger du contenu JavaScript ou JSON depuis un site distant. Une fois le contenu téléchargé, les auteurs de l'extension utilisent eval() pour déchiffrer le contenu en objets JavaScript : ceci est une mauvaise (et dangereuse) pratique et sera sanctionné lors d'une revue d'extension AMO . Cet article explore les bonnes solutions pour éviter ce problème.
JXON
JXON signifie Javascript XML Object Notation, c'est un nom générique qui définit la représentation d'objets JSON en XML.
La méthode JSON.stringify
Elle permet de convertir une valeur en JSON et éventuellement de remplacer des valeurs grâce à une fonction de remplacement ou en ne filtrant que certaines propriétés données.
La méthode JSON.parse
Analyse (parse) une chaîne de caractères en JSON et transforme éventuellement la valeur lors de l'analyse.

Voir tout...

Communauté

Outils

Voir tout...

AJAX, JavaScript, XUL

Utiliser JSON avec nsIJSON

Les versions de Firefox antérieures à Firefox 3.5 ne supportent pas JSON de façon native et la seule façon d'accéder aux fonctionnalités JSON est d'utiliser le composant nsIJSON implémenté depuis Firefox 3. L'encodage et le décodage sont effectués via les méthodes encode et decode de nsIJSON.  Ces méthodes ne sont pas aussi puissantes que les méthodes natives JSON et ne supportent que les valeurs qui sont des objets ou des tableaux (et pas les chaînes de caractères, les booléens, les nombres ou la valeur null).  (Il est possible d'utiliser ces valeurs sous forme d'objets, ainsi le chiffre 5 ne pourra pas être utilisé mais l'objet { "value": 5 } pourra être encodé/décodé.)

nsIJSON n'est pas aussi efficace que l'objet JSON, c'est pourquoi ses méthodes encode et decode ont été retirées à partir de Firefox 7. Il est fortement conseillé d'utiliser l'objet JSON.

Le code suivant montre la sérialisation d'un objet JavaScript en utilisant nsIJSON :

var Ci = Components.interfaces;
var Cc = Components.classes;

var toto = {};
toto.truc = "nouvelle propriété";
toto.machin = 3;

var jsonNatif = Cc["@mozilla.org/dom/json;1"].createInstance(Ci.nsIJSON);
var JSONtoto = jsonNatif.encode(toto);

La variable JSONtoto contient désormais la chaîne de caractères {"truc":"nouvelle propriété","machin":3}. Afin de recréer l'objet correspondant, on utilisera :

var objetJS = nativeJSON.decode(JSONtoto);

Utiliser JSON avec d'autres outils

Bien qu'en théorie il soit possible d'utiliser eval ou json2.js, cela ne constitue pas une bonne pratique. Parser des données JSON en utilisant eval peut permettre d'injecter du code arbitrairement et json2.js rajoute des méthodes aux objets natifs comme Object.prototype, ce qui pourrait potentiellement empêcher le bon fonctionnement de code ne tenant pas compte de cette évenutalité.

Voir aussi

Étiquettes et contributeurs liés au document

Contributeurs à cette page : SphinxKnight, shitsod
Dernière mise à jour par : SphinxKnight,