JSON和Object Literal Notation有什么区别?有人能告诉我使用“Object Literal Notation”和JSON对象定义的JavaScript对象之间的主要区别是什么?根据一本JavaScript书,它说这是一个使用Object Notation定义的对象:var anObject = { property1 : true, showMessage : function (msg) { alert(msg) }};在这种情况下,为什么它不是JSON对象?仅仅因为它没有使用引号定义?
5 回答
回首忆惘然
TA贡献1847条经验 获得超11个赞
实际上没有“JSON对象”这样的东西。
JSON规范是将数据编码为字符串的语法。人们称之为“JSON对象”(在javascript中)实际上只是一个普通的javascript对象,它(可能)已经从有效的JSON字符串反序列化,并且可以很容易地重新序列化为有效的JSON字符串。这通常意味着它只包含数据(而不是函数)。这也意味着没有日期,因为JSON没有日期类型(可能是关于JSON最痛苦的事情;)
此外,(侧面咆哮...)当人们谈论“JSON对象”时,他们几乎总是指在顶层有“花括号”的数据。这很好地对应于javascript对象。但是,JSON规范不要求在JSON字符串的顶层有一个“花括号”对象。在顶层有一个列表,甚至只有一个值,这是完全有效的JSON。因此,虽然每个“JSON对象”对应于有效的JSON,但并非所有有效的JSON字符串都对应于我们称之为“JSON对象”的东西!(因为字符串可以表示列表或原子值)
拉莫斯之舞
TA贡献1820条经验 获得超10个赞
JSON是JavaScript的对象文字符号的子集。
换句话说,有效的JSON也是有效的JavaScript对象文字符号,但不一定是相反的方式。
除了阅读文档,正如@Filix King建议的那样,我还建议使用JSONLint在线JSON验证器。这就是我如何知道JSON对象的键必须是字符串。
添加回答
举报
0/150
提交
取消