Sérialiser l'objet JavaScript en chaîne JSON
J'ai ce prototype JavaScript:
Utils.MyClass1 = function(id, member) {
this.id = id;
this.member = member;
}
et je créer un nouvel objet:
var myobject = new MyClass1("5678999", "text");
Si je fais:
console.log(JSON.stringify(myobject));
le résultat est:
{"id":"5678999", "member":"text"}
mais j'en ai besoin pour le type des objets à inclure dans la chaîne JSON, comme ceci:
"MyClass1": { "id":"5678999", "member":"text"}
Est-il un moyen rapide de le faire à l'aide d'un cadre ou quelque chose? Ou dois-je besoin de mettre en œuvre un toJson()
méthode dans la classe et de le faire manuellement?
Vous devez vous connecter pour publier un commentaire.
EDIT:
JSON.stringify
sera stringify tous "propriétés" de votre classe. Si vous souhaitez persister seulement certains d'entre eux, vous pouvez spécifier individuellement comme ceci:C'est juste JSON? Vous pouvez
stringify()
JSON:Et analyser retour JSON à nouveau avec
parse()
:Si vous avez des fonctions de l'objet, l'utiliser pour sérialiser:
Exemples:
Sérialiser:
Résultat:
Désérialiser:
Résultat:
Bien, le type d'un élément n'est pas en standard sérialisé, vous devez l'ajouter manuellement. Par exemple
Bonne chance!
edit: changé typeof pour le corriger .constructeur. Voir https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/constructor pour plus d'informations sur le constructeur de la propriété pour les Objets.
Ça peut être utile.
http://nanodeath.github.com/HydrateJS/
https://github.com/nanodeath/HydrateJS
Utilisation
hydrate.stringify
pour sérialiser l'objet ethydrate.parse
pour désérialiser.Vous pouvez utiliser une fonction nommée sur le constructeur.
Vous pouvez utiliser une regex pour analyser 'foo' de myobject.le constructeur et l'utiliser pour obtenir le nom.
Ci-dessous est un autre moyen par lequel nous pouvons données JSON JSON.stringify() la fonction
J'ai résolu mon problème de cette façon, pas la meilleure façon, évidemment, mais il est intéressant de partager:
J'ai modifié directement le json2.js bibliothèque (à l'opposé de meilleures pratiques...), changement de la méthode JSON.stringify() et str() fonction quand il lit un objet j'ai mis d'abord le typeof:
Ce n'est que pour ajouter un attribut classname dans mes classes. Et après itération, ajoute cette phrase:
J'ai eu quelques problèmes à l'aide des solutions ci-dessus avec un "tableau associatif" type d'objet. Ces solutions semblent préserver les valeurs, mais ils ne conservent pas les noms réels des objets que ces valeurs sont associées, ce qui peut causer quelques problèmes. J'ai donc monté les fonctions suivantes qui je suis en utilisant à la place:
Noter que ces ne peut pas être utilisé avec n'importe quel objet, fondamentalement, il crée un nouveau tableau, stocke les clés, comme l'élément 0, avec les données suivantes il. Donc, si vous essayez de charger un tableau qui n'est pas créé avec ces fonctions ayant 0 comme élément d'une liste de clés, les résultats pourraient être intéressants...:)
Je l'utilise comme ceci: