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

今天在写代码,遇到一个难点,由于要调用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. * (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> 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格式的特点和转换的更多相关文章

  1. $.each遍历json对象(java将对象转化为json格式以及将json解析为普通对象)

    查看一个简单的jQuery的例子来遍历一个JavaScript数组对象. var json = [ {"id":"1","tagName": ...

  2. JSon_零基础_005_将po(bean)对象集合List转换为JSon格式的对象字符串,返回给界面

    将po(bean)对象集合List转换为JSon格式的对象字符串,返回给界面 导入jar包: 编写:po(bean)代码: package com.west.webcourse.po; /** * 第 ...

  3. JSon_零基础_004_将Set集合对象转换为JSon格式的对象字符串,返回给界面

    将Set集合对象转换为JSon格式的对象字符串,返回给界面 需要导入的jar包: 编写:servlet: package com.west.webcourse.servlet; import java ...

  4. JSon_零基础_003_将Map集合对象转换为JSon格式的对象字符串,返回给界面

    将Map集合对象转换为JSon格式的对象字符串,返回给界面 需导入的jar包: 编写servlet: package com.west.webcourse.servlet; import java.i ...

  5. JSON(二)——JavaScript中js对象与JSON格式字符串的相互转换

    首先我们来看一下js中JSON格式的字符串 var JSONStr1 = "{\"name\" : \"张三\"}"; 注意以下的写法不是j ...

  6. JAVA中的四种JSON解析方式详解

    JAVA中的四种JSON解析方式详解 我们在日常开发中少不了和JSON数据打交道,那么我们来看看JAVA中常用的JSON解析方式. 1.JSON官方 脱离框架使用 2.GSON 3.FastJSON ...

  7. 将object格式转为json格式

    在页面内容显示时,有时需要用到json格式.但数据库内容的显示,需要将数据库中获取的格式转为json: using Newtonsoft.Json;public static string ToJso ...

  8. 将任意一个jQuery对象进行表单序列化,免除了提交请求时大量拼写表单数据的烦恼,支持键值对<name&value>格式和JSON格式。

    http://zhengxinlong.iteye.com/blog/848712 将任意一个jQuery对象进行表单序列化,免除了提交请求时大量拼写表单数据的烦恼,支持键值对<name& ...

  9. ajax处理返回的三种格式(json格式 , xml通用格式 , html文本格式)(数据类型:整数、字符串、数组、对象)(基础最重要!)

    ajax方法的参数 常用的ajax参数比如url,data,type,包括预期返回类型dataType,发送到服务器的数据的编码类型contentType,成功方法,失败方法,完成方法.除了这些以外还 ...

随机推荐

  1. 走进C++程序世界------IO标准库介绍

    流概述    流是C++标准的组成部分,流的主要目标是,将从磁盘读取文件或将输入写入控制台屏幕的问题封装起来,创建流后程序猿就能够使用它.流将负责处理全部的细节. IO类库 在C++输入、输出操作是通 ...

  2. 上传指定url文件到阿里云oss

    好处是不用下载到本地,也不用删除本地文件.省事! 先下载阿里云官方代码  https://github.com/aliyun/aliyun-oss-csharp-sdk 引用其中的 aliyun-os ...

  3. 解决idea工具下tomcat中文乱码问题

    在运行/调试 配置对话框的Startup/Connection面板中, 勾选Pass environment variables. 并添加一个environment variable, Name填 J ...

  4. 如何调用另一个python文件中的代码

    模块的搜索路径 模块的搜索路径都放在了sys.path列表中,如果缺省的sys.path中没有含有自己的模块或包的路径,可以动态的加入(sys.path.apend)即可.下面是sys.path在Wi ...

  5. oj2892(字典树)

    一改时间以后WA了,我就知道这题是考字典树,可惜代码怎么也不会敲了,郁闷. #include <stdio.h>#include <string.h>#include < ...

  6. checkbox选择

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  7. ML实践详细经典教程----用例图、顺序图、状态图、类图、包图、协作图

    面向对象的问题的处理的关键是建模问题.建模可以把在复杂世界的许多重要的细节给抽象出.许多建模工具封装了UML(也就是Unified Modeling Language?),这篇课程的目的是展示出UML ...

  8. Fuzzy and fun on Air Jordan 12 Doernbecher design

    Carissa Navarro keeps it warm, fuzzy and fun on her 2017 Air Jordan 12 Doernbecher design. Nike's 20 ...

  9. 4:7 Struts实现Ajax

    不使用插件: 返回数据: 使用插件: Action里面直接给User赋值,然后在前台拿值. type="json":表示返回json对象: root:表示作为跟对象 include ...

  10. html lang属性

    HTML 的 lang 属性可用于网页或部分网页的语言.这对搜索引擎和浏览器是有帮助的. 根据 W3C 推荐标准,您应该通过 <html> 标签中的 lang 属性对每张页面中的主要语言进 ...