mozilla
Vos résultats de recherche

    JSON.parse()

    Résumé

    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 6 (ECMA-262)
    La définition de 'JSON.parse' dans cette spécification.
    Projet  

    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)

    Tableau basé sur le tableau de compatibilité de Kangax.

    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

    Contributors to this page: teoli, WSH, SphinxKnight, DCK, raphael0202
    Dernière mise à jour par : SphinxKnight,