json数据请问怎么遍历

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了json数据请问怎么遍历相关的知识,希望对你有一定的参考价值。

<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
CompanyDao companyDao=new CompanyDaoImpl();
List<Company> companyList=companyDao.companyinformation();
JSONArray jsonlist=JSONArray.fromObject(companyList);
System.out.println(jsonlist);
%>
上面jsonlist可以获取JSON格式的数据 但是不知道在JS里要如何遍历?我的JS代码是
var zNodes =[
<%
for(Company company : jsonlist)
%>
"id":<%=company.getId()%>, "pId":<%=company.getPid()%>, "name":"<%=company.getName()%>","p_order":<%=company.getP_order()%>,
<%%>
];

提示错误说Type mismatch: cannot convert from element type Object to Company

应该是JSON格式的数据不能直接这样遍历 请问要怎么遍历这个JSON数据?

如果是js中遍历使用
var anObject = one:1,two:2,three:3;//对json数组each
$.each(anObject,function(name,value)

);

如果是Java代码直接用for循环就行了,说白了json也是数组的一种,json对象和json数组都可以

//遍历json数组
String json1 = "data:[name:'Wallace',name:'Grommit']";
jsonObjSplit = new JSONObject(json1);
JSONArray ja = jsonObjSplit.getJSONArray("data");
for (int i = 0; i < ja.length(); i++) JSONObject jo = (JSONObject) ja.get(i);System.out.println(jo.get("name"));
//JSONObject遍历json对象
String json2 = "name:'Wallace',age:15";
jsonObj = new JSONObject(json2);
for (Iterator iter = jsonObj.keys(); iter.hasNext();) String key = (String)iter.next();System.out.println(jsonObj .getString(Key));}
参考技术A

arrdata = jquery.parseJSON(jsonlist);

或者用 

eval("arrdata = " + jsonlist + ";");

然后 

for(i = 0 ;i < arrdata.length; i ++ )
    alert(arrdata[i].pId);  

这样来访问数据了~~~

追问

你这几步都是写JS里面的吗? 完全没有作用啊。而且我foreach循环里面的都是java的对象,不是JS里面创建的

追答

jsonlist是从后台返回的吗?我用php就是后台返回json_encode

追问

我用的是JSP 已经搞定了 原来直接遍历list 不用遍历Json也可以的 还是3Q了

本回答被提问者采纳
参考技术B JSONArray类型的数据,遍历出来是JSONObject,你试试把Company换成JSONObject追问

不行的啊 我要创建company对象来使用Company里的get方法

追答

那你当初就不要把它转换成JSONArray,你这个对象List companyList 可以直接遍历,为毛要转换成JSONArray。

你直接遍历companyList 呗,遍历出来的对象不就是Company对象了?

请问java不同类的对象怎么放在同一个数组,然后如何对这个数组进行遍历

这样设置对象数组对吗 该如何遍历

数组只能限定为某一个类型,即数组内的所有元素都是相同类型的。不同的类就意味着数据类型不同,不可能放在一起。追问

请问要如何做到如图的要求

追答

创建一个父类,假设为Animal类,再分别创建这三个动物子类继承Animal类。这样Animal数组里不就可以放入这三个子类对象了嘛,当然会涉及到类型强转。

参考技术A 或者说直接用List集合把你这几个数组直接用一个List表示。然后使用迭代器遍历集合 参考技术B 也可以把类存到object数组里面

以上是关于json数据请问怎么遍历的主要内容,如果未能解决你的问题,请参考以下文章

前端遍历后台传来的json 串 我后台返回的是map?

Ajax获取到后台json数据,然后怎么取其中name的值赋值给li标签里面

jquery遍历民族json数据

java后台的json值怎么传给jsp页面,并进行遍历

微信小程序怎么遍历Java后台获取到的数组

php 循环遍历json数据