0

我正在尝试将 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()

是否有任何标准或工具或技术可以做到这一点?有什么提示可以为我指明正确的方向吗?

谢谢。

4

2 回答 2

3

JavaScript 对象到JSON

不幸的是,您无法将完整的对象序列化为 JSON,因为 JSON 规范不允许序列化函数。

但是,您可以创建自己的序列化标准。您可以将其称为 Javascript Frozen Object (JSFO),这是一个好名字,因为在其他语言中您尝试做的通常称为“冻结”。或者,如果您想要一个类似于 JSON 的名称,您可以将其称为 Javascript Frozen(或 Full?)Object Notation (JSFON)。

实现相当简单。您可以从任何实现它的库(如 jQuery 或 YUI)复制 JSON 代码。或者,您可以从json.org下载任何参考实现并将其修改为字符串化函数。

要对函数进行字符串化,您基本上需要执行以下操作:

if (typeof obj == 'function') {
    return '"' + key + '":' + obj.toString();
}

将类似的东西插入任何 JSON 字符串化库。

但请不要将其称为 JSON,因为 JSON 是一种具有已发布规范的非常特定的数据格式。

于 2012-11-30T02:53:28.587 回答
0

I'd start looking at the JSON documentation on MDN, specifically JSON.stringify.

于 2012-11-29T21:07:04.357 回答