Javascript 简单对象的JSON序列化不一致
我使用的每一个JSON序列化实用程序或库似乎都被破坏了,我无法得到关于这一点的逻辑解释 让我解释一下。我在Firebug中为.NET的JSON库(可能是其他语言)运行以下代码 我只是在运行Firefox时签入:Javascript 简单对象的JSON序列化不一致,javascript,json,serialization,Javascript,Json,Serialization,我使用的每一个JSON序列化实用程序或库似乎都被破坏了,我无法得到关于这一点的逻辑解释 让我解释一下。我在Firebug中为.NET的JSON库(可能是其他语言)运行以下代码 我只是在运行Firefox时签入: var obj1 = "test"; var obj1serialization = JSON.stringify(obj1); 输出为“测试”。但这是无效的JSON对象!因此,当我尝试从序列化的JSON重新创建对象时,失败了,说明JSON字符串不正确: var obj2 = JSON
var obj1 = "test";
var obj1serialization = JSON.stringify(obj1);
输出为“测试”
。但这是无效的JSON对象!因此,当我尝试从序列化的JSON重新创建对象时,失败了,说明JSON字符串不正确:
var obj2 = JSON.parse(obj1serialization);
字符串是对象。但它们在JSON中的序列化不起作用。这种情况有什么合乎逻辑的解释吗?在(不同于几种编程语言)中,字符串不是对象,而是原语(如数字和布尔)。您要求序列化程序创建一个JSON片段。有效的JSON文档的顶级项始终是对象或数组。如果将其中一个输入到JSON.stringify
,它将生成一个有效、完整的JSON文档
大多数JSON序列化程序允许片段这一事实非常有用。他们唯一的选择是,如果您向他们传递的不是对象或数组的内容,则抛出异常
更具限制性,要求您提供的JSON文档既完整又格式良好。并非所有的JSON解析例程都有如此严格的限制,但其中一个是。在(不同于几种编程语言)中,字符串不是对象,而是原语(如数字和布尔值)。您要求序列化程序创建一个JSON片段。有效的JSON文档的顶级项始终是对象或数组。如果将其中一个输入到JSON.stringify
,它将生成一个有效、完整的JSON文档
大多数JSON序列化程序允许片段这一事实非常有用。他们唯一的选择是,如果您向他们传递的不是对象或数组的内容,则抛出异常
更具限制性,要求您提供的JSON文档既完整又格式良好。并非所有的JSON解析例程都有这样的限制,但这一个是。“我使用的每个JSON序列化实用程序或库似乎都被破坏了…”事实上,它们中的每一个都应该向您表明,您的理解可能不完整,而不是其他人都弄错了。:-)“我使用的每一个JSON序列化实用程序或库似乎都被破坏了…”事实上,它们中的每一个都应该向您表明,您的理解可能不完整,而不是其他人都弄错了。:-)