0

我使用的每个 JSON 序列化实用程序或库似乎都已损坏,对此我无法得到合乎逻辑的解释。

让我解释。我在 Firebug 中为 .NET 的 JSON 库运行以下代码,可能适用于其他语言。

当我运行时,我只是签入 Firefox:

var obj1 = "test";
var obj1serialization = JSON.stringify(obj1);

输出是""test""。但这是无效的 JSON 对象!因此,当我尝试从该序列化 JSON 重新创建对象时,它失败了,说明 JSON 字符串不正确:

var obj2 = JSON.parse(obj1serialization);

字符串是对象。但是它们在 JSON 中的序列化不起作用。这种情况有什么合乎逻辑的解释吗?

4

1 回答 1

3

JSON中(与几种编程语言不同),字符串不是对象,它们是原语(如数字和布尔值)。您要求序列化程序创建一个 JSON片段。有效 JSON 文档的顶级项始终是对象或数组。如果您将其中一个输入JSON.stringify,它将生成一个有效的、完整的 JSON 文档。

大多数 JSON 序列化程序允许片段这一事实非常有用。如果您向它们传递了不是对象或数组的东西,他们唯一的选择就是抛出异常。

JSON.parse更具限制性,要求您提供的 JSON 文档既完整又格式良好。并非所有 JSON 解析例程都有那么严格,但确实如此。

于 2012-11-02T14:58:18.147 回答