json中的数组和对象混淆

时间:2014-04-20 05:51:54

标签: javascript json

之间有什么不同
var json = [{
'id':1,
'name':'John'
}]

var json = {
'id':1,
'name':'John'
}

我的理解是,在代码中,一个json是一个数组,这意味着我们可以拥有多个包含id和name属性的对象。但对于第二个,它是一个对象。是吗?

这个怎么样

var json = ['id':1,'name':'John']

与代码一比较?

3 个答案:

答案 0 :(得分:3)

在您的情况下,没有什么是有效的JSON。

第一个是本地javascript对象的array

第二个是javascript对象。

最后一个没有效,会抛出错误。这在语法上是错误的。

在javascript数组或对象上使用JSON.stringify(),使其成为有效的JSON。

答案 1 :(得分:2)

您对第一代和第二代的理解是正确的。 但是,关于代码一和二的json语法是错误的。因为每个json字段必须使用双引号,而不是单引号。 所以代码一和代码二必须这样写:

[
    {
        "id": 1,
        "name": "John"
    }
]

{
    "id": 1,
    "name": "John"
}

现在代码三的语法错误!如果您想表示数组,则必须为var json = []; json['id']=1; json['name']='John';或对象var json={'id':1,'name':John'}

答案 2 :(得分:1)

JSON是一种格式,即将Javascript对象编码为字符序列的方法。

一旦有了一系列字符,您就可以将它存储在磁盘上或通过网络发送,然后重建字符序列中描述的对象。

您无法对JSON中的每个可能的Javascript值进行编码,只能

  • 字符串
  • 数字(不包括NaN和无穷大)
  • 阵列
  • 其他对象(只是具有可编码值的字段,而不是构造函数或方法)

此外,数据结构必须是树。 (如果它有循环,则会出现错误,并且未检测到共享子树,并且在从JSON重建时会重复。)

此外,JSON不支持数组中存在其他字段(在Javascript中可能存在,因为数组是对象)。对于JSON,您有一个数组或一个对象。

前两个示例中的值可以转换为JSON,但格式规范中还有其他要求。 (例如,对象字段名称必须加双引号。)

您的上一个示例不是有效的JSON字符串。

当您看到“JSON对象”或“JSON值”时,您必须将其读作“以JSON编码的对象”。 JSON是一种格式,或多或少像XML。