在撰写本文时,JSON仅在RFC4627中进行了描述。它(在“2”开头)将JSON文本描述为序列化的对象或数组。
{}并且
[]是有效的完整JSON字符串。
但是,ECMA-404的引入改变了这一点,更新的建议。
然而,为了进一步混淆该问题,Web浏览器中可用的
JSON对象(例如
JSON.parse()和
JSON.stringify())在ES5中进行了标准化,并且明确定义了可接受的JSON文本,如下所示:
本规范中使用的JSON交换格式与RFC 4627完全相同,但有两个例外:
ECMAscript JSON语法的顶级JSONText生成可以由任何JSONValue组成,而不是被限制为RFC
4627指定的JSONObject或JSONArray。抢断
这意味着即使JSON对象在技术上遵循RFC 4627,JSON对象也可以接受所有JSON值(包括字符串,空值和数字)。
请注意,因此,您可以通过
JSON.stringify(5),在符合标准的浏览器中对数字进行字符串化,该数字将被另一个遵循RFC4627的解析器拒绝,但该解析器没有上面列出的特定异常。例如,Ruby似乎就是这样一个例子,它 仅 接受对象和数组作为root,即“它还将对标量类型和NULL进行编码和解码”。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)