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

js中用dwr如何获取java中List<List<DATA>>的值
如果List<String, List<string>>  里面的List中数据是string格式我可以通过两个for循环获取到string的值,像下面写的:

function A(data){
  for(var key in data){
     for(var i=0;i<key[i].length;i++){
         alert(data[key][i]);
}
}
}



但是如果换成List<List<DATA>>  ,DATA是一个对象,DATA里包含多个数据,用上面的方法就获取不到值了

public class DATA{
    private int long;
    private int height;
}

怎样通过dwr获取DATA中long的值呢?

------解决方案--------------------
用firebug监视下请求返回的json字符串格式,用点操作符直接取就行了,根本不需要for来遍历
------解决方案--------------------
本帖最后由 showbo 于 2013-07-11 14:11:24 编辑
不用firebug也行,导入json2.js序列化json对象为对应的字符串
<script src="http://www.coding123.net/rardownload/20130106/20130106170832648.js"></script>
<script>
function A(data){
alert( JSON.stringify(data))//输出对应的JSON字符串,自己看结构来获取需要的数据就行了
}
</script>

------解决方案--------------------
 Grandelist只添加了一个List<data>,只有一项而已(猜测为数组对象),长度当然为1

直接return JSONArray.fromObject(listguiyuan);应该就是4了

不是告诉你了用json2.js将json序列化为对应的json字符串看结构,要不结构不知道当然无法取
------解决方案--------------------
有个问题啊,如果我改成return JSONArray.fromObject(listguiyuan),那么最外面一层我定义的ArrayList Grandelist = new ArrayList();  岂不是没有用了啊
------解决方案--------------------
如果改成返回List的话呢?还是读不到值,怎么办啊,高手快出现吧~~~

public List gatdata(int time){
 
    List<DATA>  listguiyuan = new ArrayList<data>();
        //组装数据
        DATA guidata1= new DATA(19,11);
        DATA guidata2= new DATA(17,22);