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

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

2012-02-23 21:55 633 查看


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

2011-04-19

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

view
source

print?

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的值。

本文转自:http://www.nowamagic.net/javascript/js_TraversalJson.php
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: