java集合格式_java中集合格式及json格式的特点和转换

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

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

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

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

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

@Overridepublic ListgetResMonthStatisticsList(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) 该方法对于基本数据类型的数组支持并不好,当数组是基本数据类型时不建议使用

* (2) 当使用asList()方法时,数组就和列表链接在一起了.

*     当更新其中之一时,另一个将自动获得更新。

*     注意:仅仅针对对象数组类型,基本数据类型数组不具备该特性

* (3) asList得到的数组是的没有add和remove方法的

*

* 阅读相关:通过查看Arrays类的源码可以知道,asList返回的List是Array中的实现的

* 内部类,而该类并没有定义add和remove方法.另外,为什么修改其中一个,另一个也自动

* 获得更新了,因为asList获得List实际引用的就是数组

*/

list= new ArrayList<>(Arrays.asList(userArray));

}catch(Exception e)

{

e.printStackTrace();

LOG.error("UserResourceMonthStatisticsServiceImpl.getResourceMonthStatistics() Exception...");

}returnlist;

}

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

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

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

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

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

public static T readValue(String content, ClassvalueType)

{if (objectMapper == null)

{

objectMapper= newObjectMapper();

}try{returnobjectMapper.readValue(content, valueType);

}catch(Exception e)

{

e.printStackTrace();

}return null;

}

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

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

List list= new ArrayList();

list2:[1, 2, 3, 4, 1, 2, 3, 4]

List 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" }

]}

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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值