JSON和Object Literal Notation有什么区别?

JSON和Object Literal Notation有什么区别?

有人能告诉我使用“Object Literal Notation”和JSON对象定义的JavaScript对象之间的主要区别是什么?


根据一本JavaScript书,它说这是一个使用Object Notation定义的对象:


var anObject = {

    property1 : true,

    showMessage : function (msg) { alert(msg) }

};

在这种情况下,为什么它不是JSON对象?仅仅因为它没有使用引号定义?


Helenr
浏览 915回答 5
5回答

回首忆惘然

实际上没有“JSON对象”这样的东西。JSON规范是将数据编码为字符串的语法。人们称之为“JSON对象”(在javascript中)实际上只是一个普通的javascript对象,它(可能)已经从有效的JSON字符串反序列化,并且可以很容易地重新序列化为有效的JSON字符串。这通常意味着它只包含数据(而不是函数)。这也意味着没有日期,因为JSON没有日期类型(可能是关于JSON最痛苦的事情;)此外,(侧面咆哮...)当人们谈论“JSON对象”时,他们几乎总是指在顶层有“花括号”的数据。这很好地对应于javascript对象。但是,JSON规范不要求在JSON字符串的顶层有一个“花括号”对象。在顶层有一个列表,甚至只有一个值,这是完全有效的JSON。因此,虽然每个“JSON对象”对应于有效的JSON,但并非所有有效的JSON字符串都对应于我们称之为“JSON对象”的东西!(因为字符串可以表示列表或原子值)

拉莫斯之舞

根据JavaScript中的JSON,JSON是JavaScript的对象文字符号的子集。换句话说,有效的JSON也是有效的JavaScript对象文字符号,但不一定是相反的方式。除了阅读文档,正如@Filix King建议的那样,我还建议使用JSONLint在线JSON验证器。这就是我如何知道JSON对象的键必须是字符串。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript