Sérialiser un objet en Javascript avec JSON.stringify

Mai 2013

La sérialisation (aussi appelé Marshalling) est une opération qui consiste à transformer une variable composite (comme un objet ou un tableau, qui est constitué de plusieurs éléments) en une variable scalaire (on dit aussi atomique), généralement une chaîne de caractère dans les langages web comme Javascript, ou PHP. Dans d'autres langages, on peut aussi sérialiser sous forme binaire.

En Javascript, il est possible de sérialiser des objets au format JSON. L'intérêt c'est par exemple de pouvoir transmettre des objets Javascript à un script PHP, puisqu'en PHP on peut désérialiser du JSON à l'aide de la fonction json_decode().

Venons en à la pratique : la fonction à utiliser est JSON.stringify() :

var objet = {};
objet.couleur = 'rouge';
objet.forme = 'carré';
objet.contient = ['téléphone', 'clés de voiture'];

console.log( JSON.stringify(objet) );
// {"couleur":"rouge","forme":"carré","contient":["téléphone","clés de voiture"]}

La fonction JSON.stringify est supportée par tous les navigateurs récents. Internet Explorer le supporte depuis la version IE8, les versions plus anciennes (IE7, IE6 ainsi que le mode de compatibilité) ne le supportent pas. Pour pouvoir utiliser la sérialisation avec ces vieux navigateurs, il faut utiliser une bibliothèque externe :

Voici un billet similaire qui vous permettera d'en savoir plus sur imprimer le titre du classeur excel.

Réciproque : désérialisation en Javascript

La réciproque de la fonction JSON.stringify() est JSON.parse(). Elle prend en paramètre une chaine de caractère JSON, et le transforme en objet Javascript avant de le retourner, c'est ce qu'on appelle la désérialisation.

uneval

Sur Firefox (et tous les navigateurs utilisant le moteur javascript SpiderMonkey), la fonction uneval permet de faire l'inverse de la fonction eval. Lorsqu'on lui passe en paramètre un objet, elle est sensée retourner cet objet sérialisé dans une chaine, sauf qu'elle ne retourne pas du JSON valide (elle utilise notamment des délimiteurs interdits comme le simple quote : ' (source). De plus, elle est non standard et obsolète, donc à éviter à tout prix.

Découvrez ce tutoriel photoshop : transformer une photo en bd à lire tout de suite !

2 commentaires :
commentaire n°3216 par Tazzaz
Tazzaz lundi 28 décembre 2015, 05:53
Bonjour,

J'ai un objet qui a été sérialisé avec Javascript et je souhaiterais le désérializé avec PHP. C'est un objet pour lequel il n'existe pas de classe dans PHP mais que je voudrais récupérer dans un tableau.

Voici le code Javascript à parser :
var trStyle = {
titre:"Objet de démonstration",
photos:[[6,4,9,9],[13,10,15,12]],
vente:[],
enoncevente:""
}

Merci de votre aide
commentaire n°3264 par Francois
Francois vendredi 11 mars 2016, 17:59
Merci déja cema m'éclaircit mais j'ai encore du mal a comprendre :(
facultatif
Facebook Twitter RSS Email
Forum Excel
Venez découvrir le nouveau forum excel question/réponse à la stackoverflow.com !
Forum Excel
hit parade n'en a rien a foutre du W3C Positionnement et Statistiques Gratuites Vincent Paré