读书人

在js中怎么解析JsonObject对象数组

发布时间: 2012-09-16 17:33:16 作者: rapoo

在js中如何解析JsonObject对象数组?
在后台组装了一个JsonObject对象的数组,传到了前台js中,现要把其解析出来,如何实现?

后台代码大概是这样的:

Java code
 
JsonObject json1 = new JsonObject();
JsonObject json2 = new JsonObject();

json1.addProperty("id", 1);
json1.addProperty("name", "张三");

json2.addProperty("id", 2);
json2.addProperty("name", "李四");

List <JsonObject> list = new ArrayList <JsonObject>();
list.add(json1);
list.add(json2);

return list.toArray();//传到前台js中,可以正常得到对象


前台js中大致想要实现的功能代码如下:
JScript code
 
UserAction.getUser(function(result) {
alert(result);//这里可以得到值,提示的信息为:[object Object],[object Object]
alert(result.length);//这里得到的值为2,即数组长度为2,也正确
for (var i = 0; i < result.length; i++)
{
var item = result[i];
alert(item);//这里得到的值为[object Object]也正确
alert(item.name);//[color=#FF0000]这里为何得不到值?即得不到张三与李四呢?提示信息为:undefined[/color] }
}



看上以上代码,重点红色部分,应该不难理解,我想得到name属性的值,例子中的方法,值为undefined,显然是不对的了,那要如何得到呢?从后台来看,name确实为其一个属性啊,为何却得不到值呢?对json理解得不是很清楚,向各位大虾指点。多谢。。。。

[解决办法]
item["name"]试试

如果是json数据的话 一般需要eval 但是你既然已经枚举出来了 应该就不是这个问题了
[解决办法]
给你个 代码

http://tdcq.javaeye.com/blog/840004
[解决办法]
JScript code
 for (var i = 0; i < result.length; i++)         {            var item = result[i];            alert(item);//这里得到的值为[object Object]也正确            alert(item.name);//============加下面的语句测试下item里面有什么属性,怕是你的框架修改过json对象属性什么了的for(attr in item)alert(attr+'='+item[attr]);       }   }
[解决办法]
js和java中的json对象无法互相转换的吧(用struts2可以),可以在java中将对象转换为json字符串,传到js后,再在js中将json字符串转换成json对象
Java code
 
Map map1 = new HashMap();
Map map2 = new HashMap();

map1.put("id", 1);
map1.put("name", "张三");

map2.put("id", 2);
map2.put("name","李四");

List list = new ArrayList();
list.add(map1)
list.add(map2)

Map jsonMap = new HashMap();
jsonMap.put("jsonstr",list); //必须是map对象才能转换成json对象
JSONObject json = JSONObject.fromObject(map); //要用到json-lib-2.3-jdk15.jar
return json.toString();

记得引入json.js
JScript code
 UserAction.getUser(function(result) { var jsonResult =  JSON.parse(result);//如何不行用var jsonResult=JSON.parseJSON(),json版本问题var resultList = jsonResult['jsonstr'];for(var one in resultList){   var item= resultList[one];    alert(item.id);    alert(item.name);}
[解决办法]
JScript code
alert(item.id);   //用item['id']也行 alert(item.name); //用item['name']也行 

读书人网 >Ajax

热点推荐