我正在尝试将JavaScript对象序列化为json,稍后将其反序列化为其原始形式。
困难之处在于它不仅仅是我需要序列化的原语。例如:
function Foo() {
this.bar = "Hello World";
}
Foo.prototype.baz = function() {
alert(this.bar);
}
var qux = new Foo();
我如何序列化qux
?如果我只是JSON.stringify
然后JSON.parse
,我将无法拨打qux.baz()
。
是否有任何标准或工具或技术可以做到这一点?有什么提示指出我正确的方向?
感谢。
答案 0 :(得分:3)
JavaScript对象 JSON
不幸的是,您无法将完整对象序列化为JSON,因为JSON规范不允许序列化函数。
但您可以创建自己的序列化标准。您可以将其称为Javascript Frozen Object(JSFO),这是一个很好的名称,因为在其他语言中,您尝试做的通常称为“冻结”。或者如果你想要一个类似于JSON的名字你可以称之为Javascript Frozen(或Full?)Object Notation(JSFON)。
实施相当简单。您可以从任何实现它的库中复制JSON代码,如jQuery或YUI。或者您可以从json.org下载任何参考实现,并将其修改为stringify函数。
要对函数进行字符串化,您基本上需要执行以下操作:
if (typeof obj == 'function') {
return '"' + key + '":' + obj.toString();
}
将类似内容插入到任何JSON字符串化库中。
但请不要将其称为JSON,因为JSON是一种具有已发布规范的非常具体的数据格式。
答案 1 :(得分:0)
我开始关注JSON documentation on MDN,特别是JSON.stringify。