欢迎各位兄弟 发布技术文章
这里的技术是共享的
我们知道遍历普通数组可以使用each来操作,如下
代码如下 | 复制代码 |
var _mozi=['墨家','墨子','墨翟','兼爱非攻','尚同尚贤']; //本文所用到的数组, 下同 |
当然后我们还可以使用 for..in,each更强壮一点。for..in也可以遍历数组,并返回对应索引,但值是需要通过arrName[key]来获取。
js遍历json数组
代码如下 | 复制代码 |
|
那么jquery怎么实现呢
代码如下 | 复制代码 |
<script type="text/javascript"> |
简单吧,一句就搞定了
来自 http://www.111cn.net/wy/jquery/46754.htm
一个例子 var jsonStr={qiyi:'mp4',tudou:'3gp',youku:'mp4'} 里面有属性qiyi,tudou,youku 在js中这样解析! var c = eval('(' + jsonStr + ')'); 但是.我想c.qiyi c.tudou 然后得到相对应的播放格式! 不知道怎么去做!不知道哪位高手能帮忙下! 非常谢谢
你这里的jsonstr本身就已经是对象了,而json只是字符串,也就是说对方传递过来的字符串而已。 应该写成 var jsonStr = "{qiyi:'mp4',tudou:'3gp',youku:'mp4'}"; 这样可以表示jsonStr是一个字符串,而现在要jsonStr去执行一下就可以了! 如: var c = eval(jsonStr); 然后就可以调用了!如c.qiyi等等。不过这里不太好理解的,eval就是将jsonStr字符串当指令执行了,将执行结果传递给c而已。换一句方式可能会更好的理解的! eval(" var c = "+jsonStr+";"); 也就是说重新组合一个语句,这样可以直接使用c.qiyi了! 但其实是一样的道理的,只不过很少人会用到第二种!因为如果eval没有顺利执行时,第二种会出现错误,而第一种则会出现undefined的结果,第一种与第二种的区别就是不管是否空值,第一种c对象是存在的!而第二种却未必见得!第二种方案下,执行了一个语句,然后就感觉“凭空”开始使用一个对象了!然后这样虽是不好,其中是说明下边的语句都依赖于eval这样的一个细节语句,所以不是很多的! 也就是说: var c = eval("{qiyi:'mp4',tudou:'3gp',youku:'mp4'}"); 就是将json执行后的结果。由此可以看出你对数据传递上还有些不理解的!
这个,其实您也说的很对! 所以说,我在这方面弱,所以想问下! 但是,有点不理解 var c = eval("{qiyi:'mp4',tudou:'3gp',youku:'mp4'}"); 就是将json执行后的结果。由此可以看出你对数据传递上还有些不理解的! 你这样给我的明显格式不对,不可以得到任何数据! 是不是还有别的方法啊
引号中的内容就是json传递过来的文本,怎么格式不对?引号内是要你自己获得的json文本。怎么得不到数据呢?
您这种方式还要加括号"()" 要不然就无法得到json数据里面的值! 您可以直接尝试下!
提问者评价
{"options":[{"qiyi":'mp4',"tudou":'3gp',"youku":'mp4'}]}因为本身是一个对象!所以,拆开后,在拼接好了 来自 http://zhidao.baidu.com/question/330786381.html
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 cityObj in 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 | } |
解释:
countryObj value2对象的属性名,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