简单对象的JSON序列化是不一致的

时间:2012-11-02 14:55:43

标签: javascript json serialization

我使用的每个JSON序列化实用程序或库似乎都被破坏了,我无法对此进行逻辑解释。

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

我在运行时检查Firefox:

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

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

var obj2 = JSON.parse(obj1serialization);

字符串是对象。但他们在JSON中的序列化无法正常工作。对这种情况有任何合理的解释吗?

1 个答案:

答案 0 :(得分:3)

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

大多数JSON序列化程序允许片段这一事实非常有用。他们唯一的替代方案是,如果你将一些东西传递给不是对象或数组的东西,就会抛出异常。

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