2 c273218496 c273218496 于 2016.09.20 10:42 提问

Ajax 返回的json数组解析

[
{"from":"www.baidu.com","musci":"china","type":"Classics"},
{"from":"www.baidu.com","musci":"japen","type":"Country "},
{"from":"www.baidu.com","musci":"Americ","type":"Hip-Hop"},
{"from":"www.baidu.com","musci":"Russia","type":"Jazz"},
{"from":"www.baidu.com","musci":"Korea","type":"Pop"},
]
想循环获得里面的from的值,用了eval转对象。解析不了,请大神帮帮忙

8个回答

guwei4037
guwei4037   Ds   Rxr 2016.09.20 11:13
已采纳

能弹出。

 <script type="text/javascript">
        function test(){
            var a = '[{"from":"www.baidu.com","musci":"china","type":"Classics"},{"from":"www.baidu.com","musci":"japen","type":"Country "},{"from":"www.baidu.com","musci":"Americ","type":"Hip-Hop"},{"from":"www.baidu.com","musci":"Russia","type":"Jazz"},{"from":"www.baidu.com","musci":"Korea","type":"Pop"},]';
            //alert(a);

            a= eval('('+a+')');
            for(var i = 0 ;i<a.length;i++){
                alert(a[i].from);
            }
        }
        window.onload = test;
    </script>
c273218496
c273218496 学习了,解决了。谢谢你
大约一年之前 回复
zuoyifeng1993
zuoyifeng1993   2016.09.21 09:36

我正好同问,也遇到过类似的问题,多谢提问和各位大神回答

zy_281870667
zy_281870667   Ds   Rxr 2016.09.20 10:48

参考
http://blog.csdn.net/zy_281870667/article/details/50484876

文中的第六条,取出来的是数组,用for循环遍历即可

c273218496
c273218496 学习了,解决了。谢谢你,祝你生活愉快
大约一年之前 回复
qq_15434587
qq_15434587   2016.09.20 10:49

eval是js的运行函数,也是json字符串转json对象函数

建议使用jquery的 parseJSON函数转换

 dada= eval("("+data+")");
for(var i=0,i<data.length;i++){
    var from里的值 = data[i].form;
}
c273218496
c273218496 试了还是抱undefined,兄弟你也把函数写错了。是data=; for循环 for(var i=0;) ;data[i].from
大约一年之前 回复
yun1019511571
yun1019511571   2016.09.20 10:52

String str = "[{\"from\":\"www.baidu.com\",\"musci\":\"china\",\"type\":\"Classics\"},{\"from\":\"www.baidu.com\",\"musci\":\"japen\",\"type\":\"Country \"},{\"from\":\"www.baidu.com\",\"musci\":\"Americ\",\"type\":\"Hip-Hop\"},{\"from\":\"www.baidu.com\",\"musci\":\"Russia\",\"type\":\"Jazz\"},{\"from\":\"www.baidu.com\",\"musci\":\"Korea\",\"type\":\"Pop\"},]";
JSONArray array = JSONArray.fromObject(str);
for (int i = 0; i < array.size(); i++) {
JSONObject obj = array.getJSONObject(i);
System.out.println(obj.get("from") + "\t" + obj.get("musci") + "\t" + obj.get("type"));
}

c273218496
c273218496 学习了,解决了。谢谢你,祝你生活愉快
大约一年之前 回复
qq_36000353
qq_36000353   2016.09.20 10:55

这个问题有很多解决办法啊,如果你有用js框架,都有这些方法。其实思想就是:把它看成一个对象数组,然后在用循环遍历即可。

c273218496
c273218496 学习了,解决了。谢谢你,祝你生活愉快
大约一年之前 回复
showbo
showbo   Ds   Rxr 2016.09.20 11:21

你的确认ajax得到的是字符串而不是已经为json对象(如用jquery,dataType指定为json,回调中的参数已经是json对象,不需要再eval),已经为对象直接遍历就行


    var s = '[\
    {"from":"www.baidu.com","musci":"china","type":"Classics"},\
    {"from":"www.baidu.com","musci":"japen","type":"Country "},\
    {"from":"www.baidu.com","musci":"Americ","type":"Hip-Hop"},\
    {"from":"www.baidu.com","musci":"Russia","type":"Jazz"},\
    {"from":"www.baidu.com","musci":"Korea","type":"Pop"},\
    ]';
    var o = eval('(' + s + ')');
    for(var i=0;i<o.length;i++)alert(o[i].from)
c273218496
c273218496 学习了,解决了。谢谢你,祝你生活愉快
大约一年之前 回复
c273218496
c273218496 大神,得到的确实是字符串类型的。谢谢你,这种方法可行
大约一年之前 回复
c273218496
c273218496   2016.09.20 11:27

谢谢各位大神们,小弟感激学习了。回答的都可以实现

Csdn user default icon
上传中...
上传图片
插入图片