json-lib 简化AJAX开发过程。

首先:  下载json-lib  以及与json-lib 相关联的jar 包

 

 

 

昨天在使用jquery  的ajax 功能来和服务器的struts 2  进行交互,设计需要struts 2 的action 建立一个包含多个Map 对象的 Arraylist,并希望将这个ArrayList  转换成json 对象,最后返回到页面的Jquery 代码。Jquery 代码通过对获取的JSon 对象进行解析,并根据Map 的键名获取出 键值。

 

通常对于不太复杂的JSON 对象生成过程,都会在java 代码中手工敲格式的转换:

 List list1=new ArrayList();
       for(int i=0;i<size;i++){
           Object[] objs=(Object[]) list.get(i);
           sb.append("{");
           int objlength=objs.length;
            for(int j=0;j<objlength;j++){
                 sb.append("no"+j+":/"");
                 sb.append(objs[j]);
              sb.append("/",");
               
              
            }
            sb.append("}");
            if(i<size-1){
                 sb.append(",");
                
             }

 

 

类似于如上的代码段,平时如果只是简单的Json对象通过一定的调试时间还能够写得出来,但是这次的任务我花费了大约1个多小时的时间才弄出来(当然也和JavaScript不不好调试)有关。想到以后的工作中指不定还有更加复杂的JSon对象需要生成,每次都用手工编写调试,太浪费时间了。

BAIDU 了一下,发现有个 json-lib 的jar包能够非常方便地将java中的很多对象都转换成JSon 对象,并且转换的语句非常简单:

 

   int size=list.size();
       System.out.println("size--------------------"+size);
     List<Map> jsonlist=new ArrayList();
       for(int i=0;i<size;i++){
           Object[] objs=(Object[])list.get(i);
           Map map=new HashMap();
          
           for(int j=0;j<objs.length;j++){
               map.put("key"+j, objs[j]);
           }
          // JSONArray mapJson=JSONArray.fromObject(map);
           jsonlist.add(map);
       }
      
       jsonArray=JSONArray.fromObject(jsonlist);

 

最后一句就是java 中包含了多个Map 的ArrayList 转换成JSon!

 

 

 

最后将jsonArray  转换成String

this.theaterString=jsonArray.toString();

并将theaterString 传递给Jquery

 

 

 

为了告诉Struts2 theaterString 是需要传递的JSon 对象,还需要在struts.xml   中进行设置:

 

 

 <result name="initTable" type="json">
                  <param name="includeProperties">theaterString</param>

 

 

 

 

 

 

 

 

 

 

在JQuery中解析 json的代码如下:

 

function(json){

        var data=eval('('+json.theaterString+')');

。。。。。。。。。。。。。。

}

 

 

 

 

 

 

当JSon传递给Jquery 并通过解析之后,json 就成为一个数组,这个数组的每个元素都是Map

贴上我的Jquery 中操作这些数组的代码:

 

for(var i=0;i<data.length;i++){
            var resourceSn = data[i].key0;
            var cState = data[i].key1;
            var rState = data[i].key2;
            var uState = data[i].key3;
            var dState = data[i].key4;
            var extState = data[i].key5;

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值