java中集合格式及json格式的特点和转换
作者原创:转载请注明出处
今天在写代码,遇到⼀个难点,由于要调⽤webservice接⼝,返回的为⼀个list集合内容,从webservice调⽤接⼝返回的为⼀个string的io 流,
在调⽤接⼝的地⽅,将io流转成string格式,然后遇到的疑问则为如何将⼀个string格式的字符串转化为List集合对象的格式,仔细研究之后,
终于解决问题,思路如下:
先将传输过来的IO流,转化为string字符串,然后将字符串转化为json格式的数组,然后将json格式的数组转化为集合格式的对象,代码如下:
@Override
public List<UserResourceMonthStatistics> getResMonthStatisticsList(UserResourceMonthStatistics monthStatistics)
{
List<UserResourceMonthStatistics> list = new ArrayList<>();
try
{
//将实体对象转化为json格式
String JSon(monthStatistics);
//获取请求URL
String url = ValueByKey("questURL");
//请求URL
String reqUrl = url + "/monthStatistics/getMonthStatisticsList";
System.out.println("请求URL为"+reqUrl);
String response=HttpRequestUtil.httpPostWithJSON(reqUrl, reqJson);
/
/将String格式转化为实体类对象格式
//json数据不可以直接转换为list集合的格式,先将json格式数据转成数组,然后将数组转成集合的⽅式。
UserResourceMonthStatistics[] userArray = adValue(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();
<("ResourceMonthStatistics() ");
}
return list;
}
此处需要注意的是,我曾尝试直接转成list格式,但我输出他的类型的时候,它是⼀个字符串类型,如下:
adValue(response, List<UserResourceMonthStatistics >.class);
所以才有了代码⾥⾯的⽅法,先将其转换为⼀个数组类型的数据,然后再将其转化为⼀个list集合。
其中Arrays.asList(),数组转集合的⽅法,⽤法参考其他博客如下:blog.csdn/cntanghai/article/details/7188296.
其中将string转json格式的⽅法如下:
public static <T> T readValue(String content, Class<T> valueType)
{
if (objectMapper == null)
{
objectMapper = new ObjectMapper();
}
try
{
adValue(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" }
]}
需要注意的是,两种类型的格式有很⼤的差异。。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。