Kal*_*ico 54 javascript json constructor
我有这个JavaScript原型:
Utils.MyClass1 = function(id, member) {
this.id = id;
this.member = member;
}
Run Code Online (Sandbox Code Playgroud)
我创建了一个新对象:
var myobject = new MyClass1("5678999", "text");
Run Code Online (Sandbox Code Playgroud)
如果我做:
console.log(JSON.stringify(myobject));
Run Code Online (Sandbox Code Playgroud)
结果是:
{"id":"5678999", "member":"text"}
Run Code Online (Sandbox Code Playgroud)
但我需要将对象的类型包含在JSON字符串中,如下所示:
"MyClass1": { "id":"5678999", "member":"text"}
Run Code Online (Sandbox Code Playgroud)
有没有一种快速的方法来使用框架或其他东西?或者我是否需要toJson()在类中实现一个方法并手动执行?
Jak*_*cki 70
var myobject = new MyClass1("5678999", "text");
var dto = { MyClass1: myobject };
console.log(JSON.stringify(dto));
Run Code Online (Sandbox Code Playgroud)
编辑:
JSON.stringify将字符串化您班级的所有 "属性".如果您只想保留其中一些,可以单独指定它们,如下所示:
var dto = { MyClass1: {
property1: myobject.property1,
property2: myobject.property2
}};
Run Code Online (Sandbox Code Playgroud)
MSS*_*MSS 12
这只是JSON?你可以stringify()JSON:
var obj = {
cons: [[String, 'some', 'somemore']],
func: function(param, param2){
param2.some = 'bla';
}
};
var text = JSON.stringify(obj);
Run Code Online (Sandbox Code Playgroud)
并再次解析回JSON parse():
var myVar = JSON.parse(text);
Run Code Online (Sandbox Code Playgroud)
如果对象中有函数,请使用此函数序列化:
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();
}
}
Run Code Online (Sandbox Code Playgroud)
连载:
var text = objToString(obj); //To Serialize Object
Run Code Online (Sandbox Code Playgroud)
结果:
"{cons:[[String,"some","somemore"]],func:function(param,param2){param2.some='bla';}}"
Run Code Online (Sandbox Code Playgroud)
反序列化:
Var myObj = eval('('+text+')');//To UnSerialize
Run Code Online (Sandbox Code Playgroud)
结果:
Object {cons: Array[1], func: function, spoof: function}
Run Code Online (Sandbox Code Playgroud)