我有一个JavaScript原型:
Utils.MyClass1 = function(id, member) {
this.id = id;
this.member = member;
}然后我创建了一个新对象:
var myobject = new MyClass1("5678999", "text");如果我这样做了:
console.log(JSON.stringify(myobject));结果是:
{"id":"5678999", "member":"text"}但我需要将对象的类型包含在JSON字符串中,如下所示:
"MyClass1": { "id":"5678999", "member":"text"} 有没有一种快速的方法来使用框架或其他东西来实现这一点呢?或者,我是否需要在类中实现toJson()方法并手动执行?
发布于 2011-11-17 17:30:14
var myobject = new MyClass1("5678999", "text");
var dto = { MyClass1: myobject };
console.log(JSON.stringify(dto));编辑:
JSON.stringify会将你的类的所有属性“”字符串化。如果你只想持久化其中的一部分,你可以像这样单独指定它们:
var dto = { MyClass1: {
property1: myobject.property1,
property2: myobject.property2
}};发布于 2014-11-21 14:22:06
只是JSON吗?你可以stringify() JSON:
var obj = {
cons: [[String, 'some', 'somemore']],
func: function(param, param2){
param2.some = 'bla';
}
};
var text = JSON.stringify(obj);并使用parse()再次解析回JSON。
var myVar = JSON.parse(text);如果对象中有函数,请使用以下代码进行序列化:
function objToString(obj, ndeep) {
switch(typeof obj){
case "string": return '"'+obj+'"';
case "function": return obj.name || obj.toString();
case "object":
var indent = Array(ndeep||1).join('\t'), isArray = Array.isArray(obj);
return ('{['[+isArray] + Object.keys(obj).map(function(key){
return '\n\t' + indent +(isArray?'': key + ': ' )+ objToString(obj[key], (ndeep||1)+1);
}).join(',') + '\n' + indent + '}]'[+isArray]).replace(/[\s\t\n]+(?=(?:[^\'"]*[\'"][^\'"]*[\'"])*[^\'"]*$)/g,'');
default: return obj.toString();
}
}示例:
序列化:
var text = objToString(obj); //To Serialize Object结果:
"{cons:[[String,"some","somemore"]],func:function(param,param2){param2.some='bla';}}"反序列化:
Var myObj = eval('('+text+')');//To UnSerialize 结果:
Object {cons: Array[1], func: function, spoof: function}发布于 2011-11-17 18:23:49
元素的类型不是标准序列化的,所以您应该手动添加它。例如
var myobject = new MyClass1("5678999", "text");
var toJSONobject = { objectType: myobject.constructor, objectProperties: myobject };
console.log(JSON.stringify(toJSONobject));祝好运!
编辑:将typeof更改为正确的.constructor。有关对象的构造函数属性的详细信息,请参见https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/constructor。
https://stackoverflow.com/questions/8164802
复制相似问题