首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >JSON和对象文字表示法有什么不同?

JSON和对象文字表示法有什么不同?
EN

Stack Overflow用户
提问于 2010-05-25 19:34:31
回答 3查看 69.5K关注 0票数 242

有人能告诉我使用对象文字表示法定义的JavaScript对象和JSON对象的主要区别是什么吗

根据JavaScript的一本书,它说这是一个使用对象表示法定义的对象

代码语言:javascript
复制
var anObject = {
    property1 : true,
    showMessage : function (msg) { alert(msg) }
};

为什么在本例中它不是JSON对象?仅仅因为它不是用引号定义的吗?

EN

回答 3

Stack Overflow用户

发布于 2011-12-14 23:55:07

真的没有"JSON对象“这回事。

JSON规范是一种将数据编码为字符串的语法。人们所说的"JSON对象“(在javascript中)实际上只是一个普通的javascript对象,它(可能)已经从有效的JSON字符串反序列化,并且可以很容易地重新序列化为有效的JSON字符串。这通常意味着它只包含数据(而不是函数)。这也意味着没有日期,因为JSON没有日期类型(可能是JSON最痛苦的事情;)

此外,(侧怒...)当人们谈论"JSON对象“时,他们几乎总是指在顶层有”大括号“的数据。这很好地对应于一个javascript对象。然而,JSON规范并不要求在JSON字符串的顶层有一个“花括号”对象。在顶层有一个列表,甚至只有一个值,这是完全有效的JSON。因此,虽然每个"JSON对象“都对应于有效的JSON,但并非所有有效的JSON字符串都对应于我们所说的"JSON对象”!(因为字符串可以表示列表或原子值)

票数 17
EN

Stack Overflow用户

发布于 2018-05-14 18:05:39

首先,您应该知道JSON是什么:

它是一种与语言无关的数据交换格式。

例如,在JSON中,所有键都必须用引号括起来,而在对象文字中,这不是必需的:

// JSON:{ "foo":"bar“}

版本),则不允许使用保留字作为属性名称,例如:

var o={ "if":"foo“};所以为了”兼容性“(也许还有简单的求值?)引号是必填项。

JSON中的数据类型也被限制为以下值:

字符串数组对象数组文字为: true false null字符串的语法会发生变化。

在JSON中,您只能使用Decimal文字。

//无效的JSON:{ "foo":0xFF }

票数 0
EN

Stack Overflow用户

发布于 2019-06-20 02:18:06

代码语言:javascript
复制
let object =  { "a": undefined } ;

let badJSON= '{ "a": undefined }';


console.log('valid JS object :', object );
console.log('JSON from object:', JSON.stringify(object) );
console.log('invalid json    :', JSON.parse(badJSON) );

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2904131

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档