JSON.stringify()

JSON est souvent utilisé pour échanger des données avec le serveur.

Lorsqu'on envoie des données au serveur, il s'agit généralement d'une chaîne.

Nous pouvons utiliser la méthode JSON.stringify() pour convertir un objet JavaScript en une chaîne.

Syntaxe

JSON.stringify(value[, replacer[, space]])

Description du paramètre :

  • value:

    Obligatoire. La valeur JavaScript à convertir (généralement un objet ou un tableau).

  • replacer:

    Facultatif. Une fonction ou un tableau utilisé pour transformer le résultat.

    Si replacer est une fonction, JSON.stringify appellera cette fonction en lui passant la clé et la valeur de chaque membre. La valeur de retour est utilisée à la place de la valeur d'origine. Si cette fonction retourne undefined, le membre est exclu. La clé de l'objet racine est une chaîne vide : "".

    Si replacer est un tableau, seuls les membres dont les clés sont présentes dans le tableau sont convertis. L'ordre de conversion des membres est le même que l'ordre des clés dans le tableau. Lorsque le paramètre value est également un tableau, le tableau replacer est ignoré.

  • space:

    Facultatif. Ajoute une indentation, des espaces et des sauts de ligne au texte. Si space est un nombre, le texte de la valeur de retour est indenté du nombre d'espaces spécifié à chaque niveau. Si space est supérieur à 10, le texte est indenté de 10 espaces. space peut aussi être un non-nombre, comme \t.


Conversion d'objet JavaScript

Par exemple, nous envoyons les données suivantes au serveur :

var obj = { "name":"example", "alexa":10000, "site":"www.example.com"};

Nous utilisons la méthode JSON.stringify() pour traiter les données ci-dessus et les convertir en chaîne :

var myJSON = JSON.stringify(obj);

myJSON est une chaîne.

Nous pouvons envoyer myJSON au serveur :

Exemple

var obj = { "name":"example", "alexa":10000, "site":"www.example.com"}; var myJSON = JSON.stringify(obj); document.getElementById("demo").innerHTML = myJSON;

Essayez-le vous-même »

Conversion de tableau JavaScript

Nous pouvons également convertir un tableau JavaScript en une chaîne JSON :

Exemple

var arr = [ "Google", "Example", "Taobao", "Facebook" ]; var myJSON = JSON.stringify(arr);

myJSON est une chaîne.

Nous pouvons envoyer myJSON au serveur :

Exemple

var arr = [ "Google", "Example", "Taobao", "Facebook" ]; var myJSON = JSON.stringify(arr); document.getElementById("demo").innerHTML = myJSON;

Essayez-le vous-même »

Exceptions

Analyse des données

JSON ne peut pas stocker d'objets Date.

JSON.stringify() convertira toutes les dates en chaînes de caractères.

Exemple

var obj = { "name":"Example", "initDate":new Date(), "site":"www.example.com"}; var myJSON = JSON.stringify(obj); document.getElementById("demo").innerHTML = myJSON;

Essayez-le vous-même »

Après cela, vous pouvez reconvertir la chaîne en un objet Date.


Fonctions d'analyse syntaxique

JSON n'autorise pas les fonctions. JSON.stringify() supprimera les fonctions des objets JavaScript, y compris la clé et la valeur.

Exemple

var obj = { "name":"Example", "alexa":function () {return 10000;}, "site":"www.example.com"}; var myJSON = JSON.stringify(obj); document.getElementById("demo").innerHTML = myJSON;

Essayez-le vous-même »

Nous pouvons éviter le problème ci-dessus en convertissant la fonction en chaîne avant d'exécuter la fonction JSON.stringify() :

Exemple

var obj = { "name":"Example", "alexa":function () {return 10000;}, "site":"www.example.com"}; obj.alexa = obj.alexa.toString(); var myJSON = JSON.stringify(obj); document.getElementById("demo").innerHTML = myJSON;

Essayez-le vous-même »

Il n'est pas recommandé d'utiliser des fonctions dans JSON.


Prise en charge des navigateurs

Les navigateurs grand public prennent tous en charge la fonction JSON.stringify() :

  • Firefox 3.5
  • Internet Explorer 8
  • Chrome
  • Opera 10
  • Safari 4
Autres extensions