--- title: Utiliser le JSON natif slug: conflicting/Web/JavaScript/Reference/Global_Objects/JSON tags: - Add-ons - Advanced - ECMAScript5 - Extensions - JSON - JavaScript translation_of: Web/JavaScript/Reference/Global_Objects/JSON translation_of_original: Web/JavaScript/Guide/Using_native_JSON original_slug: Web/JavaScript/Guide/Utiliser_le_JSON_natif ---
{{jsSidebar("JavaScript Guide")}}
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.
TypeError
.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);
À 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, }");
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
remplacement
'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
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é.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 :
Number
, la chaîne correspondante à ce nombre est utilisée pour la valeur de la propriété de à ajouter à la chaîne JSON.String
, cette chaîne est utilisée comme la valeur de la propriété à ajouter à la chaîne JSON.Boolean
, "true" ou "false" est utilisé comme la valeur de la propriété à ajouter à la chaîne JSON.undefined
, la propriété n'est pas incluse dans la chaîne résultante.undefined
ou une fonction est renvoyée : null
sera renvoyé.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.