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 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...");
} 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> T readValue(String content, Class<T> 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" }
]}
需要注意的是,两种类型的格式有很大的差异。。
java中集合格式及json格式的特点和转换的更多相关文章
- $.each遍历json对象(java将对象转化为json格式以及将json解析为普通对象)
查看一个简单的jQuery的例子来遍历一个JavaScript数组对象. var json = [ {"id":"1","tagName": ...
- JSon_零基础_005_将po(bean)对象集合List转换为JSon格式的对象字符串,返回给界面
将po(bean)对象集合List转换为JSon格式的对象字符串,返回给界面 导入jar包: 编写:po(bean)代码: package com.west.webcourse.po; /** * 第 ...
- JSon_零基础_004_将Set集合对象转换为JSon格式的对象字符串,返回给界面
将Set集合对象转换为JSon格式的对象字符串,返回给界面 需要导入的jar包: 编写:servlet: package com.west.webcourse.servlet; import java ...
- JSon_零基础_003_将Map集合对象转换为JSon格式的对象字符串,返回给界面
将Map集合对象转换为JSon格式的对象字符串,返回给界面 需导入的jar包: 编写servlet: package com.west.webcourse.servlet; import java.i ...
- JSON(二)——JavaScript中js对象与JSON格式字符串的相互转换
首先我们来看一下js中JSON格式的字符串 var JSONStr1 = "{\"name\" : \"张三\"}"; 注意以下的写法不是j ...
- JAVA中的四种JSON解析方式详解
JAVA中的四种JSON解析方式详解 我们在日常开发中少不了和JSON数据打交道,那么我们来看看JAVA中常用的JSON解析方式. 1.JSON官方 脱离框架使用 2.GSON 3.FastJSON ...
- 将object格式转为json格式
在页面内容显示时,有时需要用到json格式.但数据库内容的显示,需要将数据库中获取的格式转为json: using Newtonsoft.Json;public static string ToJso ...
- 将任意一个jQuery对象进行表单序列化,免除了提交请求时大量拼写表单数据的烦恼,支持键值对<name&value>格式和JSON格式。
http://zhengxinlong.iteye.com/blog/848712 将任意一个jQuery对象进行表单序列化,免除了提交请求时大量拼写表单数据的烦恼,支持键值对<name& ...
- ajax处理返回的三种格式(json格式 , xml通用格式 , html文本格式)(数据类型:整数、字符串、数组、对象)(基础最重要!)
ajax方法的参数 常用的ajax参数比如url,data,type,包括预期返回类型dataType,发送到服务器的数据的编码类型contentType,成功方法,失败方法,完成方法.除了这些以外还 ...
随机推荐
- 下厨房6月26日数据丢失事故总结 MYSQL主分区被rm 命令误删除
下厨房6月26日数据丢失事故总结 MYSQL主分区被rm 命令误删除 http://tech.xiachufang.com/?p=18 在6月26日凌晨12点左右,我们在做线上数据库的备库时,误将线上 ...
- java-JProfiler(三)-进行本地JVM的性能监控-监视本地java程序
1.打开JProfiler 默认会启动快速窗口[或者使用菜单Session→Start Center]打开 这里监视本地java程序,故在 主界面 2.查看监视界面 这时就可以查看 Instance ...
- win10 问题:你没有权限在此位置中保存文件。请与管理员联系以获得相应权限。
https://jingyan.baidu.com/album/b24f6c8207f09886bee5da4a.html?picindex=2 归根结底就是通过点击文件夹的属性,在安全选项处,修改操 ...
- 协作工具 discord 和 slack
discord: https://discordapp.com/ slack: www.slack.com
- 高性能mysql 4 ,5章
第4章 1:查询优化,多表连接时只取需要的列,要对select * 保持怀疑. 2:如果发现访问的数据行数很大,而生成的结果中数据行很少,那么可以尝试更复杂的修改 a: 使用覆盖索引,b: 更改架构, ...
- Y2K Accounting Bug(poj2586)
题意: 有一个公司由于某个病毒使公司赢亏数据丢失,但该公司每月的 赢亏是一个定数,要么一个月赢利s,要么一月亏d.现在ACM只知道该公司每五个月有一个赢亏报表,而且每次报表赢利情况都为亏.在一年中这样 ...
- 使用 sendKeys(keysToSend) 批量上传文件
未经允许,禁止转载!!! 在selenium里面处理文件上传的时候可以使用sendKeys(keysToSend) 上传文件 例如: element.sendKeys(“C:\\test\\uploa ...
- 54. Spiral Matrix(剑指offer--19)
Given a matrix of m x n elements (m rows, n columns), return all elements of the matrix in spiral or ...
- zw版【转发·台湾nvp系列Delphi例程】HALCON BitXor
zw版[转发·台湾nvp系列Delphi例程]HALCON BitXor procedure TForm1.Button1Click(Sender: TObject);var image0, imag ...
- 20155227 2016-2017-2 《Java程序设计》第九周学习总结
20155227 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 JDBC简介 JDBC全名Java DataBase Connectivity,是java联 ...