Please note, this is a STATIC archive of website developer.mozilla.org from November 2016, cach3.com does not collect or store any user information, there is no "phishing" involved.

Utiliser le JSON natif

Cet article aborde l'objet JSON natif conforme à ECMAScript 5 qui a été ajouté à Gecko 1.9.1. Pour consulter les informations de base sur l'utilisation de JSON dans les versions précédentes de Firefox, consulter la page JSON.

L'objet natif JSON possède deux méthodes clés. La méthode JSON.parse() qui analyse une chaîne de caractères JSON et qui reconstruit l'objet JavaScript original. La méthode JSON.stringify(), quant à elle, accepte un objet JavaScript et renvoie son équivalent JSON.

Note : JSON ne supporte pas les structures cycliques. Toute tentative de conversion d'une telle structure renverra une exception TypeError.

Analyser (parser) les chaînes JSON

Afin de convertir une chaîne JSON en un objet JavaScript, il suffit de passer une chaîne JSON à la méthode JSON.parse() :

var objetJS = JSON.parse(chaineJSON);

JavaScript 1.8.5 note

À partir de JavaScript 1.8.5 (Firefox 4), JSON.parse() n'accepte pas les virgules en fin de chaîne

// ces deux instructions renverront une exception SyntaxError
// à partir de JavaScript 1.8.5
var objetJS = JSON.parse("[1, 2, 3, 4, ]");
var objetJS = JSON.parse("{ \"toto\" : 1, }");

Convertir les objets en JSON

Afin de convertir un objet JavaScript en une chaîne JSON, il suffit de passer l'objet à la méthode JSON.stringify() :

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

var chaineJSON = JSON.stringify(toto);

chaineJSON contient désormais '{"truc":"nouvelle propriété","machin":3}'.

Depuis Firefox 3.5.4, JSON.stringify() permet d'adapter la conversion grâce à des paramètres optionnels. La syntaxe est la suivante :

chaineJSON = JSON.stringify(valeur [, remplacement [, espace]])remplacement

valeur
L'objet JavaScript à convertir en une chaîne JSON.
remplacement
Une fonction qui modifie le comportement de la conversion ou bien un tableau d'objets String et Number qui sera utilisé comme une liste de propriétés de l'objet valeur à inclure dans la chaîne JSON. Si cette valeur est nulle ou n'est pas fournie, toutes les propriétés de l'objet seront inclues dans la chaîne résultante.
espace
Un objet String ou Number utilisé pour insérer des espaces dans la chaîne JSON afin qu'elle soit plus lisible. Si c'est un objet Number, il indique le nombre d'espaces à insérer. Ce nombre est limité à 10. Les valeurs inférieures à 1 indiquent qu'aucun espace ne sera utilisé, les valeurs supérieures à 10 seront ramenées à 10. Si cet objet est une String, la chaîne de caractères (ou les 10 premiers caractères si la chaîne est plus longue) à utiliser comme blanc. Si ce paramètre n'est pas fourni (ou vaut null), aucun blanc ne sera utilisé.

Le paramètre de remplacement

La paramètre remplacement peut être une fonction ou un tableau. Si c'est une fonction, elle prendra deux paramètres : la clé et la valeur à être convertie en chaîne de caractères. L'objet pour lequel la clé a été trouvée sera fourni comme paramètre this de la fonction de remplacement. Initialement elle est appelée avec une clé vide représentant l'objet à transformer en chaîne et est ensuite appelé pour chacune des propriétés de l'objet ou du tableau à convertir. Elle doit renvoyer la valeur à ajouter à la chaîne de caractère JSON comme suit :

  • Si on renvoie un Number, la chaîne correspondante à ce nombre est utilisée pour la valeur de la propriété de à ajouter à la chaîne JSON.
  • Si on renvoie une String, cette chaîne est utilisée comme la valeur de la propriété à ajouter à la chaîne JSON.
  • Si on renvoie un Boolean, "true" ou "false" est utilisé comme la valeur de la propriété à ajouter à la chaîne JSON.
  • Si on renvoie n'importe quel autre objet, il est alors transformé en chaîne JSON de façon récursive en appelant la même fonction de remplacement sur chacune de ses propriétés sauf si l'objet est une fonction, auquel cas on n'ajoute rien à la chaîne JSON.
  • Si la valeur de retour est undefined, la propriété n'est pas incluse dans la chaîne résultante.
Note : Il est impossible d'utiliser la fonction de remplacement pour retirer des valeurs d'un tableau. Si la valeur undefined ou une fonction est renvoyée  : null sera renvoyé.

Exemple

function censure(key, value) {
  if (typeof value === "string") {
    return undefined;
  }
  return value;
}

var toto = {fondation: "Mozilla", modèle: "box", semaine: 45, transport: "voiture", mois: 7};
var chaineJSON = JSON.stringify(toto, censure);

La chaîne JSON produite sera {"semaine":45,"mois":7}.

Si remplacement est un tableau, les valeurs du tableau indiquent les noms des propriétés de l'objet à inclure dans la chaîne JSON.

Voir aussi

Étiquettes et contributeurs liés au document

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