servlet中resultset转化为json (java) list转为json

      最近在做Android从服务端拉取数据,采用doget方式向服务器请求数据。服务端经过Sql查询后得到的ResultSet结果集以json的形式返回。所以重点解决一下数据集是如何封装成json,以及在客户端又是如何把返回的json数据流重组成原数据

      开始之前先大概说一下json的一些东西:

      json格式其实质可看成一个字符串流,只不过它带有json特有的格式:  [{},{},{}...,{}],中括号[]代表的是jsonarray,而其中的花括号{}代表的是jsonobject,json格式的具体情况读者可百度一下,很容易理解

      开始正题:

       先看数据的结构:

             作为演示,采用下列数据集:

                           

也即:data中的数据如下结构

       {"title":"这是一个标题0","image":"这是图片0","info":"这是一个详细信息0"},

       {"title":"这是一个标题1","image":"这是图片1","info":"这是一个详细信息1"},

       {"title":"这是一个标题2","image":"这是图片2","info":"这是一个详细信息2"},

       {"title":"这是一个标题3","image":"这是图片3","info":"这是一个详细信息3"},

       {"title":"这是一个标题4","image":"这是图片4","info":"这是一个详细信息4"},

       {"title":"这是一个标题5","image":"这是图片5","info":"这是一个详细信息5"},

         ...........................(共20组)

 

数据库执行查询后获得的resultset,其结构正如上面所示,具体的数据会有不同,上述只是举例方便,下面的操作读者可自行类比

服务端:

1.将resultset中的数据提取到 List<Map<String, Object>> 结构中:

        List<Map<String, Object>> data = new ArrayList<Map<String, Object>>();

        

2. 将data转化为JSONArray

         

3.将data转化为JSONArray后返回给客户端:

           

 

客户端:

接收到的json数据是流的形式,下面要做的就是将服务器以json格式封装起来的resultset还原回来,将json流重组成List<Map<String, Object>> data

1.在executeHttpGet中获取json格式的接收值,存入String类型的变量中,假设该变量是:receivestring

2.将该receivestring转化为jsonarray:

         

3.reJsonArray中包含了上述的20个jsonobject,所以现在就需要遍历reJsonArray,将每个jsonobject中所携带的key-value对存入map<>中,此处若有不解,先看一下上面的那个存储结构,再结合下面的代码就很好理解了:

          

4.经过上述三步,json流就被还原成了List<Map<String, Object>>结构

 

总结起来,数据的形式变化经历了这样一个过程:

             服务端查询出resultset ------>>> resultset存入List<Map<String, Object>>结构。

             ------>>> 将该List<Map<String, Object>>结构中的数据转换为json格式返回客户端。

             ------>>> 客户端接收到该json流。 ------>>> 将该json流还原成List<Map<String, Object>>结构以供使用

 

 

 

最后贴个我的运行结果图:(得到这个list<Map<String, Object>>结构后后面的操作真真就灵活了很多了,想怎么来就怎么来)

          

附下演示的源码 核心是resultset转json 以及json的还原 

链接:http://pan.baidu.com/s/1dFyj1NN 密码:xwn8

posted on 2016-05-03 19:45  承序猿  阅读(8750)  评论(0编辑  收藏  举报

导航