JSON.parse()

La méthode JSON.parse() parse une chaine de caractères en JSON et, optionnellement, transforme la valeur produite par l'analyse.

Syntaxe

JSON.parse(texte[, reviver])

Paramètres

texte
La chaine de caractère à analyser comme du JSON. Voir l'objet JSON pour une description de la syntaxe JSON.
reviver
Si l'argument est une fonction, effectue une opération de transformation sur la valeur parsée avant de la renvoyer.

Valeur de retour

Retourne un Objet correspondant au texte envoyé.

Exceptions

Lève une exception SyntaxError si la chaine de caractère à analyser ne contient du JSON valide.

Exemples

UtiliserJSON.parse()

try {
  JSON.parse('{}');              // {}
  JSON.parse('true');            // true
  JSON.parse('"toto"');           // "toto"
  JSON.parse('[1, 5, "false"]'); // [1, 5, "false"]
  JSON.parse('null');            // null
} catch (e) {
  console.error("Parsing error:", e); 
}

Utiliser le paramètre reviver

Si un reviver est spécifié, la valeur obtenue par l'analyse est transformée avant d'être renvoyée. Plus précisément, la valeur calculée, et toutes les propriétés (commençant avec les propriétés les plus imbriquées), sont passées individuellement au reviver, qui est appelé avec : l'objet contenant la propriété en cours de traitement, le nom de la propriété en chaine de caractères et la valeur de la propriété. Si la fonction reviver retourne undefined (ou ne retourne aucune valeur, par exemple si l'exécution s'arrête à la fin de la fonction), la propriété est supprimée de l'objet. Autrement la propriété est redéfinie avec la valeur retournée.

Le reviver est appelé avec une chaine de caractères vide et la valeur la plus proche pour permettre la transformation de cette valeur. Vous devez être certains de gérer ce cas, habituellement par retourner la valeur donné, ou JSON.parse() va retourner undefined.

JSON.parse('{"p": 5}', function (k, v) {
    if(k === "") {return v; }     // si c'est la valeur la plus haute on la renvoie
    return v * 2;              // sinon on renvoie v * 2.
});                            // { p: 10 }

JSON.parse('{"1": 1, "2": 2,"3": {"4": 4, "5": {"6": 6}}}', function (k, v) {
    console.log(k);            // on affiche le nom de la propriété dans la console
    return v;                  // et on renvoie la valeur inchangée.
});

// 1
// 2
// 4
// 6
// 5
// 3
// ""

JSON.parse() n'accepte pas les virgules en fin de tableau

// les deux instructions qui suivent lèveront une SyntaxError
JSON.parse("[1, 2, 3, 4, ]");
JSON.parse("{ \"toto\" : 1, }");

Spécifications

Spécification Statut Commentaires
ECMAScript 5.1 (ECMA-262)
La définition de 'JSON.parse' dans cette spécification.
Standard Définition initiale.
Implementée avec JavaScript 1.7.
ECMAScript 2015 (6th Edition, ECMA-262)
La définition de 'JSON.parse' dans cette spécification.
Standard  

Compatibilité des navigateurs

Fonctionnalité Chrome Firefox (Gecko) Internet Explorer Opera Safari
Support simple (Oui) 3.5 (1.9.1) 8.0 10.5 4.0
Fonctionnalité Android Chrome pour Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Support simple (Oui) (Oui) 1.0 (1.0) (Oui) (Oui) (Oui)

Notes spécifiques à Gecko

À partir de Gecko 29 (Firefox 29 / Thunderbird 29 / SeaMonkey 2.26), une chaîne de JSON mal formée renverra un message d'erreur détaillé qui contient la ligne et la colonne à l'origine de l'erreur. Cela peut s'avérer utile lorsqu'on manipule de grandes quantités de données JSON.

JSON.parse('[1, 2, 3,]');
// SyntaxError : JSON.parse : caractère inattendu
// à la ligne 1 et à la colonne 10 de la donnée JSON

Voir aussi

Étiquettes et contributeurs liés au document

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