博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java中集合格式及json格式的特点和转换
阅读量:7050 次
发布时间:2019-06-28

本文共 2834 字,大约阅读时间需要 9 分钟。

作者原创:转载请注明出处

     今天在写代码,遇到一个难点,由于要调用webservice接口,返回的为一个list集合内容,从webservice调用接口返回的为一个string的io流,

在调用接口的地方,将io流转成string格式,然后遇到的疑问则为如何将一个string格式的字符串转化为List集合对象的格式,仔细研究之后,

终于解决问题,思路如下:

先将传输过来的IO流,转化为string字符串,然后将字符串转化为json格式的数组,然后将json格式的数组转化为集合格式的对象,代码如下:

@Override    public List
getResMonthStatisticsList(UserResourceMonthStatistics monthStatistics) { List
list = new ArrayList<>(); try { //将实体对象转化为json格式 String reqJson=JSonUtils.toJSon(monthStatistics); //获取请求URL String url = ConfigHelper.getValueByKey("interface.requestURL"); //请求URL String reqUrl = url + "/monthStatistics/getMonthStatisticsList"; System.out.println("请求URL为"+reqUrl); String response=HttpRequestUtil.httpPostWithJSON(reqUrl, reqJson); //将String格式转化为实体类对象格式 //json数据不可以直接转换为list集合的格式,先将json格式数据转成数组,然后将数组转成集合的方式。 UserResourceMonthStatistics[] userArray = JSonUtils.readValue(response, UserResourceMonthStatistics[].class); /*
  1. * (1) 该方法对于基本数据类型的数组支持并不好,当数组是基本数据类型时不建议使用 
  2.  * (2) 当使用asList()方法时,数组就和列表链接在一起了. 
  3.  *     当更新其中之一时,另一个将自动获得更新。 
  4.  *     注意:仅仅针对对象数组类型,基本数据类型数组不具备该特性 
  5.  * (3) asList得到的数组是的没有add和remove方法的 
  6.  *  
  7.  * 阅读相关:通过查看Arrays类的源码可以知道,asList返回的List是Array中的实现的 
  8.  * 内部类,而该类并没有定义add和remove方法.另外,为什么修改其中一个,另一个也自动 
  9.  * 获得更新了,因为asList获得List实际引用的就是数组
*/            list = new ArrayList<>(Arrays.asList(userArray));    }    catch (Exception e)    {        e.printStackTrace();        LOG.error("UserResourceMonthStatisticsServiceImpl.getResourceMonthStatistics() Exception...");    }                return list;    }

此处需要注意的是,我曾尝试直接转成list格式,但我输出他的类型的时候,它是一个字符串类型,如下:

list=JSonUtils.readValue(response, List<UserResourceMonthStatistics >.class);

所以才有了代码里面的方法,先将其转换为一个数组类型的数据,然后再将其转化为一个list集合。

其中Arrays.asList(),数组转集合的方法,用法参考其他博客如下:http://blog.csdn.net/cntanghai/article/details/7188296.

 

其中将string转json格式的方法如下:

 

public static 
T readValue(String content, Class
valueType) { if (objectMapper == null) { objectMapper = new ObjectMapper(); } try { return objectMapper.readValue(content, valueType); } catch (Exception e) { e.printStackTrace(); } return null; }

 

 

切记:在刚开始的时候,一直以为集合的格式和json格式是一致的,所以中间犯了很多错。

集合的格式特点总结如下:

List<String> list= new ArrayList<String>();

list2:[1, 2, 3, 4, 1, 2, 3, 4]
List<Student> studentList = new ArrayList<>();

studentList [

       student1[id=1,name=小明,age=23],
       student2[id=2,name=小花,age=13]
   ]

下面的是一个json格式的集合:

 

 

 

{ "people": [

{ "firstName": "Brett", "lastName":"McLaughlin", "email": "aaaa" },

{ "firstName": "Jason", "lastName":"Hunter", "email": "bbbb"},

{ "firstName": "Elliotte", "lastName":"Harold", "email": "cccc" }

]}

需要注意的是,两种类型的格式有很大的差异。。

 

你可能感兴趣的文章
仅IE支持clearAttributes/mergeAttributes方法
查看>>
Linux中U盘和SD卡加载卸载命令
查看>>
github push403错误的处理
查看>>
Hibernate与 MyBatis的比较
查看>>
关于百度地图API的地图坐标转换问题
查看>>
【操作系统】设备管理(五)
查看>>
ArcObject开发时,axtoolbarcontrol中一些添加的按钮是灰色的问题
查看>>
[LeetCode] Guess Number Higher or Lower 猜数字大小
查看>>
netbeans 快捷键
查看>>
C#实现GDI+基本图的缩放、拖拽、移动
查看>>
github-ssh
查看>>
FiddlerScript学习一:改动Request或Response
查看>>
linux下dd命令详解【转】
查看>>
JS及JQuery对Html内容编码,Html转义
查看>>
在java中如何在非servlet的普通类中获取request、response、session
查看>>
Linux Rsync
查看>>
Redis实现消息队列
查看>>
2k8 32bit下载
查看>>
密码需要带特殊字符
查看>>
个人收集的java精品网站
查看>>