【发布时间】:2011-11-04 22:05:28
【问题描述】:
每当这里有人说“我有一个 JSON 对象”时,人们就会(正确地)抱怨“没有 JSON 对象这样的东西!”但是……
可以用 JSON 表示的数据结构类别是什么?
这有点像“Map、List、Number、String 和 Boolean 的有限传递闭包”——也就是说,省略了函数之类的东西以及集合和队列等更高级的结构。该类别很有用。显然,用 JSON 完成的一切都使用它。 CouchDB(我认为其他面向文档的数据库)使用它。大多数非循环数据结构都包含在其中。
但是它叫什么?
【问题讨论】:
-
json 代表 javascript 对象表示法,因此任何对象都是 json,任何 json 都是对象。但是当您在 javascript 之外时,我们将这种类型的对象称为 json,因为该格式源自 javascript 对象
-
@Ibu “任何对象都是 JSON”,不完全正确,JSON 使用 JS 语法的子集,并不是所有可以用 JS 对象完成的事情都可以用 JSON 表示。例如,JS 对象可以具有作为值(方法)的函数,这些函数不能导出为 JSON。另外 JSON 需要引用对象中的属性名称,JS 不需要,JSON 需要双引号,JS 可以使用双引号或单引号:
{validJS: 'but not valid JSON'}。然而,JSON 字符串是有效的 JS:{"validJS": "and also valid JSON"}. -
我真的希望 Crockford 先生不使用术语“JSON”,因为多年来将“JS”包含在 JavaScript 中导致了无穷无尽的混乱。不确定用什么更好的术语可能是“通用对象表示法”或“对象序列化格式”的“GON”或“OSF”?无论如何,现在为时已晚。
-
在这个 RFC 中,Crockford 先生称他们为 JSON objects and JSON arrays