0
var foo = { "a": 1, "b": true, c: [1, true, "2"] };

如果我在这里错了,请纠正我,但据我所知,这是一个有效的 json 对象。但它也是一个 javascript 对象。

JSON 对象是基于 javascript 语言的吗?或者是周围的其他方式?

谢谢

4

5 回答 5

4

JSON 对象是基于 javascript 语言的吗?

是的。

规格

JavaScript Object Notation (JSON) 是一种轻量级的、基于文本的、独立于语言的数据交换格式。它源自 ECMAScript 编程语言标准。

请注意,ECMAScript 是JavaScript 的标准化版本

于 2012-08-22T19:54:56.793 回答
1

来自JSON网站

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。人类很容易阅读和写作。机器很容易解析和生成。它基于 JavaScript 编程语言的一个子集。

所以你的问题的答案是肯定的。

于 2012-08-22T19:56:38.090 回答
1

“如果我在这里错了,请纠正我,但据我所知,这是一个有效的 json 对象”

不。

“但它也是一个 javascript 对象。”

是的。

更新:我的原始答案在下面继续,但我错过了一个重要的语法错误,@badunk 很有帮助地指出

字符串

{ "a": 1, "b": true, c: [1, true, "2"] }

是 JSON。JSON 只是关于符号- 关于哪些符号构成有效的语法,以及它们在被处理后的含义。

你的代码:

var foo = { "a": 1, "b": true, c: [1, true, "2"] };

..是一段javascript。解析和处理 this 时,赋值右侧的部分称为 javascript 对象字面量。也就是说,一段表示文字对象的javascript。但是因为它实际上是一个对象,所以它不再是符号——它被处理成一个运行时数据结构。

当您谈论数据交换(例如通过 HTTP)时,术语 JSON 很有用。如果 HTTP 响应传递了这样的字符串:

{ "a": 1, "b": true, c: [1, true, "2"] }

它是有效的 JSON。如果这将被解释,它将导致一个 javascript 对象。

于 2012-08-22T20:02:15.773 回答
1

有人可能会争辩说没有“JSON 对象”这样的东西(http://benalman.com/news/2010/03/theres-no-such-thing-as-a-json/)。

上面的代码实际上是一个对象文字。另一方面,JSON 只是一个对象的字符串表示,即它是一个序列化。

于 2012-08-22T20:04:25.633 回答
1

正如@Roland 指出的那样,语句本身是一个 javascript 表达式,而不是 JSON。但是,忽略这一点,并评估以下是否为 JSON:

{ "a": 1, "b": true, c: [1, true, "2"] }

我不同意这里的其他答案,这不是有效的 JSON。严格来说,属性必须用引号括起来。请参阅此处的 SO 帖子。这是正确的 JSON:

{ "a": 1, "b": true, "c": [1, true, "2"] }
于 2012-08-22T20:26:21.550 回答