欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

jquery遍历json数组实例方法

shiping1 的头像
本文章来给大家介绍在jquery中利用什么来遍历json数组,具体操作过程相当简单,有需要了解的朋友可进入参考参考。

我们知道遍历普通数组可以使用each来操作,如下

 代码如下复制代码

var _mozi=['墨家','墨子','墨翟','兼爱非攻','尚同尚贤']; //本文所用到的数组, 下同
$.each(_mozi,function(key,val){
    //回调函数有两个参数,第一个是元素索引,第二个为当前值
    alert('_mozi数组中 ,索引 : '+key+' 对应的值为: '+val);
});

当然后我们还可以使用 for..in,each更强壮一点。for..in也可以遍历数组,并返回对应索引,但值是需要通过arrName[key]来获取。


js遍历json数组

 代码如下复制代码


<script type="text/javascript">
var json = {"options":"[{"text":"王家湾","value":"9"},{"text":"李家湾","value":"10"},{"text":"邵家湾","value":"13"}]"}
json = eval(json.options)
for(var i=0; i<json.length; i++)
{
alert(json[i].text+" " + json[i].value)
}
</script>


那么jquery怎么实现呢

 

 代码如下复制代码

<script type="text/javascript"> 
var d1 =[{"text":"王家湾","value":"9"},{"text":"李家湾","value":"10"},{"text":"邵家湾","value":"13"}]; 
$(d1).each(function(){ 
alert(this.text+" "+this.value); 
}); 
</script>

简单吧,一句就搞定了



来自 http://www.111cn.net/wy/jquery/46754.htm


 


js 遍历 json 对象数据

2011-10-17 09:42shendixiong | 分类:数据结构及算法 | 浏览4978次 | 该问题已经合并到>>
一个例子
var jsonStr={qiyi:'mp4',tudou:'3gp',youku:'mp4'}
里面有属性qiyi,tudou,youku
在js中这样解析!
var c = eval('(' + jsonStr + ')');
但是.我想c.qiyi c.tudou
然后得到相对应的播放格式!
  不知道怎么去做!不知道哪位高手能帮忙下!
   非常谢谢
 
2011-10-17 09:57提问者采纳
你这里的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
    
    
    
    
    
    

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

    2011-04-19

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

    Part 1

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

    Part 2

    01var 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 
    18for(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

    01var 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  
    18for (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

    01var 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

普通分类: