您的位置:首页 > Web前端 > JavaScript

遍历json获得数据的几种方法

2012-02-08 22:12 555 查看
Json在Web开发的用处非常广泛,作为数据传递的载体,如何解析Json返回的数据是非常常用的。下面介绍下四种解析Json的方式:

Part 1

1
var
list1 = [1,3,4];
2
alert(list1[1]);
3
var
list2 = [{
"name"
:
"leamiko"
,
"xing"
:
"lin"
}];
4
alert(list2[0][
"xing"
])
5
alert(list2[0].xing)
Part 2

01
var
value = {
02
"china"
:{
03
"hangzhou"
:{
"item"
:
"1"
},
04
"shanghai"
:{
"item"
:
"2"
},
05
"chengdu"
:{
"item"
:
"3"
}
06
},
07
"America"
:{
08
"aa"
:{
"item"
:
"1"
},
09
"bb"
:{
"item"
:
"2"
}
10
},
11
"Spain"
:{
12
"dd"
:{
"item"
:
"1"
},
13
"ee"
:{
"item"
:
"2"
},
14
"ff"
:{
"item"
:
"3"
}
15
}
16
};
17
18
for
(
var

countryObj
in
value)
19
{
20
document.write(countryObj+
":<br />"
)
21
//没用的for(var cityObjin value.countryObj)
22
for
(
var

cityObj
in
value[countryObj])
23
{
24
document.write(
''

+ cityObj+ 
"<br />"
);
25
for
(
var

itemObj
in
value[countryObj][cityObj])
26
{
27
document.write(
""
+ itemObj+ value[countryObj][cityObj][itemObj] +
"<br />"
)
28
}
29
}

30
}
解释:

countryObj为value对象的一个属性明,value[countryObj] 为value对象的属性值 这里为一个json对象比如b,value[countryObj][cityObj]为josn对象b的属性值 它也是一个json对象,于是 value[countryObj][cityObj]["item"]便可以取到json对象暂时成为c的值,或者 value[countryObj][cityObj].item。

总之分清是json还是array这是很关键的。

Part 3

01
var
value2 = {
02
"china"
:[
03
{
"name"
:
"hangzhou"
,
"item"
:
"1"
},
04
{
"name"
:
"shanghai"
,
"item"
:
"2"
},
05
{
"name"
:
"sichuan"
,
"item"
:
"3"
}
06
],
07
"America"
:[
08
{
"name"
:
"aa"
,
"item"
:
"12"
},
09
{
"name"
:
"bb"
,
"item"
:
"2"
}
10
],
11
"Spain"
:[
12
{
"name"
:
"cc"
,
"item"
:
"1"
},
13
{
"name"
:
"dd"
,
"item"
:
"23"
},
14
{
"name"
:
"ee"
,
"item"
:
"3"
}
15
]
16
};
17
 
18
for
(
var

countryObj
in
value2)
19
{
20
document.write(countryObj+
":<br />"
)
21
for

(
var

cityObj
in
value2[countryObj])
22
{
23
//可以用document.write("" + value2[countryObj][cityObj].item + "<br />");
24
document.write(cityObj+
""
+ value2[countryObj][cityObj][
"name"
] +
"<br />"
);
25
}
26
}
解释:

countryObj为value2对象的属性名,value2[countryObj] 为value2对象属性值 在本例中它是一个数组,cityObj是数组的一个元素,它又是另外一个json对象,于是,value2[countryObj][cityObj]["name"]就访问到该对象的 name的属性值,也可以通过 value2[countryObj][cityObj].name 来访问该属性值。

Part 4

01
var
value2 = {
02
"china"
:[
03
{
"name"
:
"hangzhou"
,
"item"
:
"1"
},
04
{
"name"
:
"shanghai"
,
"item"
:
"2"
},
05
{
"name"
:
"sichuan"
,
"item"
:
"3"
}
06
],
07
"America"
:[
08
{
"name"
:
"aa"
,
"item"
:
"12"
},
09
{
"name"
:
"bb"
,
"item"
:
"2"
}
10
],
11
"Spain"
:[
12
{
"name"
:
"cc"
,
"item"
:
"1"
},
13
{
"name"
:
"dd"
,
"item"
:
"23"
},
14
{
"name"
:
"ee"
,
"item"
:
"3"
}
15
]
16
};
17
 
18
for

(
var

countryObj
in
value2)
19
{
20
document.write(countryObj+
":<br />"
)
21
//document.write("" + value2[countryObj].length);
22
for

(
var
i = 0;i < value2[countryObj].length; i++)
23
{
24
document.write(
""

+ value2[countryObj][i][
"name"
] +
"<br />"
);
25
}
26
}
解释:

countryObjvalue2对象的属性名,value2[countryObj] 属性值 本例中是一个数组,value2[countryObj].length 数组的长度,value2[countryObj][i]数组的项 == json对象。

value2[countryObj][i]["name"] 取得name的值,也可以用value2[countryObj][i].name 来取得name的值。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: