+ -
当前位置:首页 → 问答吧 → JSON字符串表示数组的问题

JSON字符串表示数组的问题

时间:2011-11-11

来源:互联网

有这样一个JSON字符串:
[
{ id:1, pId:0, name:"随意勾选 父 1", open:true},
{ id:11, pId:1, name:"随意勾选 子 1", checked:true},
{ id:12, pId:1, name:"没有 checkbox 1", nocheck:true, open:true}
];
这是一个表示数组的JSON字符串吧?但是格式我有些看不懂,JSON不应该是Key/Value对吗,像上面这个字符串感觉不像键值对啊~~
[]里面的三个子JSON字符串可以看成是value,但是他们的key是什么呢?

正规的写法是不是应该是这样:
{ "test": [
  { id:1, pId:0, name:"随意勾选 父 1", open:true},
  { id:11, pId:1, name:"随意勾选 子 1", checked:true},
  { id:12, pId:1, name:"没有 checkbox 1", nocheck:true, open:true}
]} 

????

作者: love_u_qt   发布时间: 2011-11-11

其实错误的理解不在于key/value组成,因为json允许数组
只是你的"test"知道用引号。后面的所有key都没有。这个不是标准合格的json格式。

作者: cj205   发布时间: 2011-11-11

json确实有数组。。。。何必纠结这些东西呢。。

作者: p2227   发布时间: 2011-11-11

引用 1 楼 cj205 的回复:

其实错误的理解不在于key/value组成,因为json允许数组
只是你的"test"知道用引号。后面的所有key都没有。这个不是标准合格的json格式。

嗯我知道JSON可以有数组,但第一种那种数组的写法是不是不太正规(如果不算没加引号)?因为它没有键值啊,对吗?

作者: love_u_qt   发布时间: 2011-11-11

索引就是键值

作者: ifandui   发布时间: 2011-11-11

两者都对,只是访问形式上
第一种 \
var obj=[
 { id:1, pId:0, name:"随意勾选 父 1", open:true},
 { id:11, pId:1, name:"随意勾选 子 1", checked:true},
 { id:12, pId:1, name:"没有 checkbox 1", nocheck:true, open:true}
];
访问 
alert(obj.id);

var obj= { "test": [
  { id:1, pId:0, name:"随意勾选 父 1", open:true},
  { id:11, pId:1, name:"随意勾选 子 1", checked:true},
  { id:12, pId:1, name:"没有 checkbox 1", nocheck:true, open:true}
]}  
alert(obj.test.id);

作者: hundanbaobao001   发布时间: 2011-11-11

引用 3 楼 love_u_qt 的回复:

引用 1 楼 cj205 的回复:

其实错误的理解不在于key/value组成,因为json允许数组
只是你的"test"知道用引号。后面的所有key都没有。这个不是标准合格的json格式。

嗯我知道JSON可以有数组,但第一种那种数组的写法是不是不太正规(如果不算没加引号)?因为它没有键值啊,对吗?
http://www.json.org/

作者: cj205   发布时间: 2011-11-11

这有什么好纠结的,json是人规定的东西,

作者: p2227   发布时间: 2011-11-11

我之前也有类似的误解

其实简单理解呢

json可以是两种东西

一个就是 key/value 的

{
key1:value1,
key2:value2

}

另一个就是 数组

{
value1,value2
}

需要强调的是 这两种类型的中value 的格式可以是五花八门啊,,,

我当初没搞清楚就是不了解value,其中的value就是object

作者: sirzxj   发布时间: 2011-11-11

json是通用数据交换格式,允许有数组的表现结构。离开js环境另当别论,但是在js里[]就解释为数组!
里面的单项可以是json对象,在概念上就应该区分开,对着[]喊json让数组情何以堪啊?。

作者: ycmjh2010   发布时间: 2011-11-11