Sérialiser un objet en Javascript avec JSON.stringify
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.
- JSON-js
Librairie Javascript native (aucun framework requis)
https://github.com/douglascrockford/JSON-js - jquery-json
Plugin jQuery qui fourni une fonction$.toJSON
, alternative àJSON.stringify()
http://code.google.com/p/jquery-json/
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 !
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