日期:2014-05-16  浏览次数:20643 次

在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']也行