有人能告诉我使用对象文字表示法定义的JavaScript对象和JSON对象的主要区别是什么吗
根据JavaScript的一本书,它说这是一个使用对象表示法定义的对象
var anObject = {
property1 : true,
showMessage : function (msg) { alert(msg) }
};
为什么在本例中它不是JSON对象?仅仅因为它不是用引号定义的吗?
发布于 2011-12-14 23:55:07
真的没有"JSON对象“这回事。
JSON规范是一种将数据编码为字符串的语法。人们所说的"JSON对象“(在javascript中)实际上只是一个普通的javascript对象,它(可能)已经从有效的JSON字符串反序列化,并且可以很容易地重新序列化为有效的JSON字符串。这通常意味着它只包含数据(而不是函数)。这也意味着没有日期,因为JSON没有日期类型(可能是JSON最痛苦的事情;)
此外,(侧怒...)当人们谈论"JSON对象“时,他们几乎总是指在顶层有”大括号“的数据。这很好地对应于一个javascript对象。然而,JSON规范并不要求在JSON字符串的顶层有一个“花括号”对象。在顶层有一个列表,甚至只有一个值,这是完全有效的JSON。因此,虽然每个"JSON对象“都对应于有效的JSON,但并非所有有效的JSON字符串都对应于我们所说的"JSON对象”!(因为字符串可以表示列表或原子值)
发布于 2018-05-14 18:05:39
首先,您应该知道JSON是什么:
它是一种与语言无关的数据交换格式。
例如,在JSON中,所有键都必须用引号括起来,而在对象文字中,这不是必需的:
// JSON:{ "foo":"bar“}
版本),则不允许使用保留字作为属性名称,例如:
var o={ "if":"foo“};所以为了”兼容性“(也许还有简单的求值?)引号是必填项。
JSON中的数据类型也被限制为以下值:
字符串数组对象数组文字为: true false null字符串的语法会发生变化。
在JSON中,您只能使用Decimal文字。
//无效的JSON:{ "foo":0xFF }
发布于 2019-06-20 02:18:06
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) );
https://stackoverflow.com/questions/2904131
复制相似问题