La méthode JSON.parse() parse une chaîne de caractères JSON et construit la valeur JavaScript ou l'objet décrit par cette chaîne. On peut éventuellement utiliser cette fonction avec un paramètre de modification permettant de traiter l'objet avant qu'il soit renvoyé.

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 analysée avant de la renvoyer.

Valeur de retour

Un objet (Object) correspondant au texte envoyé.

Exceptions

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

Exemples

Utiliser JSON.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.

Si le reviver ne transforme que certaines valeurs et pas d'autres, assurez-vous que les valeurs inchangées soient renvoyées telles quelles. En effet, si elles ne sont pas renvoyées, elles seront supprimés sur l'objet obtenu !

JSON.parse('{"p": 5}', (key, value) =>
  if (typeof value === 'number') {
    return value * 2;  // renvoie value * 2 pour les nombres
  }
  return value;        // pour le reste, la valeur est inchangée
);

// { p: 10 }

JSON.parse('{"1": 1, "2": 2,"3": {"4": 4, "5": {"6": 6}}}', (key, value) => {
    console.log(key);            // on affiche le nom de la propriété dans la console
    return value;                // 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 État 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  
ECMAScript Latest Draft (ECMA-262)
La définition de 'JSON.parse' dans cette spécification.
Projet  

Compatibilité des navigateurs

Update compatibility data on GitHub
OrdinateurMobileServeur
ChromeEdgeFirefoxInternet ExplorerOperaSafariWebview AndroidChrome pour AndroidEdge MobileFirefox pour AndroidOpera pour AndroidSafari pour iOSSamsung InternetNode.js
Support simpleChrome Support complet OuiEdge Support complet OuiFirefox Support complet 3.5IE Support complet 8Opera Support complet 10.5Safari Support complet 4WebView Android Support complet OuiChrome Android Support complet OuiEdge Mobile Support complet OuiFirefox Android Support complet 4Opera Android Support complet OuiSafari iOS Support complet OuiSamsung Internet Android Support complet Ouinodejs Support complet Oui

Légende

Support complet  
Support complet

Voir aussi

Étiquettes et contributeurs liés au document

Dernière mise à jour par : edspeedy,