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
|
CommunautéOutilsSujets liés |
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é.