javascript – 自定义对象到JSON然后回到自定义对象?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – 自定义对象到JSON然后回到自定义对象?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2268字,纯文字阅读大概需要4分钟。
内容图文
![javascript – 自定义对象到JSON然后回到自定义对象?](/upload/InfoBanner/zyjiaocheng/731/e8651304ec7a473c92aada5848c8adce.jpg)
我已经看到了非常类似的问题,但我不能确定他们是否得到了明确的回答 – 也许我有点密集,对不起.
我想拥有自己对象的方便性(和清晰度),称之为CardboardBox().它不包含代码,只包含数据.我想将它写入数据库并稍后再读回来,但显然,当它被回读时它是一个类型Object().我能想到的只是找出它曾经是:
>拥有我设置为CARDBOARD_BOX的成员变量类型
>实例化一个新的CarbardBox()并使用一个函数(在框中)将Object()的属性复制到新的CardboardBox()对象
有没有更好的方法呢?我很确定我可以改变实际类型.
function CardboardBox() {
this.type = "CARDBOARD_BOX"
this.name = "No set";
this.populate = new function(obj) {
// populate this object with obj properties
}
var box = new CarboardBox(); // CarboardBox
box.name = "My Box";
send = JSON.stringyfy(box);
.
.
.
obj = JSON.parse(send); // Object
if (obj.type == "CARDBOARD_BOX") {
savedBox = new CardboardBox();
savedBox.populate(obj);
}
提前致谢…
史蒂夫
[编辑]我的测试代码.
function CardboardBox(n) {
this.name = n;
}
var box = new CardboardBox("My Box");
send = JSON.stringify(box); // JSON CarboardBox()
obj = JSON.parse(send, function fn(obj) { // Object() returned
log("OB: "+obj.type);
return obj.type === 'CardboardBox' ? new CardboardBox(obj) : CardboardBox;
});
console.log(obj);
输出是:
OB: undefined utils.js:40
OB: undefined utils.js:40
function CardboardBox(n) {
this.name = n;
}
解决方法:
一种可能的解决方案如下:
function CardboardBox(n) {
if(typeof(n) == 'string') {
//build from name string
this.name = n;
} else {
//build from object
this.name = n.name;
}
//add in this object's "type" in a place
//that is unlikely to exist in other JSON strings
this.__type = 'CardboardBox';
}
var box = new CardboardBox("My Box");
send = JSON.stringify(box), // JSON CarboardBox()
obj = JSON.parse(send, function(key, val) {
//if this is an object, and is CardboardBox
if(typeof(val) === 'object' && val.__type === 'CardboardBox')
return new CardboardBox(val);
return val;
//or if your object is in a context (like window), and there are many of
//them that could be in there, you can do:
//
//if(typeof(val) === 'object' && context[val.__type])
// return new context[val.__type](val);
});
console.log(obj);
基本上将对象类型存储在解析json时稍后要查找的位置.如果您有多个对象可以在单个作用域中实例化,则第二个解析方法可能更合适.这也将考虑JSON中不是CarboardBox的对象.
编辑这是此方法的jsFiddle.
内容总结
以上是互联网集市为您收集整理的javascript – 自定义对象到JSON然后回到自定义对象?全部内容,希望文章能够帮你解决javascript – 自定义对象到JSON然后回到自定义对象?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。