import com.dj.fss.vo.MessageListVO;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.ObjectMapper; import java.io.IOException;
import java.util.List; /**
* ObjectMapper readValue()方法
* 利用泛型解决复杂json结构
* @JsonIgnoreProperties(ignoreUnknown = true) 没有实例化的属性不自动赋值 没有这个回报异常
*
* @param <T>
*/
@JsonIgnoreProperties(ignoreUnknown = true)
public class PageBean<T extends Object> {
private List<MessageListVO> messageList; private pageinfo pageinfo; public PageBean.pageinfo getPageinfo() {
return pageinfo;
} public void setPageinfo(PageBean.pageinfo pageinfo) {
this.pageinfo = pageinfo;
} public List<MessageListVO> getMessageList() {
return messageList;
} public void setMessageList(List<MessageListVO> messageList) {
this.messageList = messageList;
} @JsonIgnoreProperties(ignoreUnknown = true)
public class pageinfo{
private int total; public int getTotal() {
return total;
} public void setTotal(int total) {
this.total = total;
}
} private static String jsonString = "{\n" +
" \"messageList\": [\n" +
" {\n" +
" \"id\": \"7\",\n" +
" \"sendCompany\": \"广州机场\",\n" +
" \"recvCompany\": \"中国南航航空公司\",\n" +
" \"messageType\": \"1001\",\n" +
" \"sendTime\": \"2018-07-12 16:43:06\"\n" +
" },\n" +
" {\n" +
" \"id\": \"4\",\n" +
" \"sendCompany\": \"广州机场\",\n" +
" \"recvCompany\": \"中国南航航空公司\",\n" +
" \"messageType\": \"1002\",\n" +
" \"sendTime\": \"2018-07-12 15:49:02\"\n" +
" }\n" +
" ],\n" +
" \"pageinfo\": {\n" +
" \"pageNum\": 1,\n" +
" \"pageSize\": 3,\n" +
" \"size\": 2,\n" +
" \"startRow\": 1,\n" +
" \"endRow\": 2,\n" +
" \"total\": 2,\n" +
" \"pages\": 1,\n" +
" \"list\": null,\n" +
" \"prePage\": 0,\n" +
" \"nextPage\": 0,\n" +
" \"isFirstPage\": true,\n" +
" \"isLastPage\": true,\n" +
" \"hasPreviousPage\": false,\n" +
" \"hasNextPage\": false,\n" +
" \"navigatePages\": 8,\n" +
" \"navigatepageNums\": [\n" +
" 1\n" +
" ],\n" +
" \"navigateFirstPage\": 1,\n" +
" \"navigateLastPage\": 1,\n" +
" \"firstPage\": 1,\n" +
" \"lastPage\": 1\n" +
" }\n" +
" }"; public static void main(String[] args) throws JsonParseException, JsonMappingException, IOException { ObjectMapper mapper = new ObjectMapper();
PageBean<MessageListVO> strPageBean = mapper.readValue(jsonString, PageBean.class);
System.out.println(strPageBean.getMessageList().get(0));
System.out.println(strPageBean.getMessageList().get(1));
System.out.println(strPageBean.getPageinfo().getTotal());
} }

结果:------------

利用ObjectMapper readValue()和泛型解决复杂json结构的更多相关文章

  1. 利用jackson-databind,复杂对象对象和json数据互转

    如果简单对象,那么转换的方式比较多,这里指的复杂对象,是指对象里面存在cycle引用,比如: /** * @author ding * */@Entity@Table(name = "ser ...

  2. Jackson ObjectMapper readValue过程

    1.整体调用栈 2.看一下调用栈的两个方法 resolve 方法中通过 Iterator i$ = this._beanProperties.iterator() 遍历属性的所有子属性,缓存对应的 d ...

  3. ObjectMapper用于将java对象转换为json格式数据以及JSONObject对象解析json格式数据

    ObjectMapper objectMapper = new ObjectMapper(); //反序列化的时候如果多了其他属性,不抛出异常 objectMapper.configure(Deser ...

  4. 利用nginx做反向代理解决前端跨域问题

    最近朋友再群里提了一个问题,他们公司给他提供了一个获取数据的接口,在浏览器访问这个接口能获取到json数据,但是放在项目里使用ajax就产生了跨域问题,一般这个需要提供接口的后台方面需要做跨域处理,但 ...

  5. 利用Python的三元表达式解决Odoo中工资条中城镇、农村保险的问题

    Python中没有像C#中有三元表达式 A?B:C 但在python中可以通过 A if condition else B 的方式来达到同样的效果. 例如 : 1 if True else 0 输出 ...

  6. 无法解决“Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed”与“Newtonsoft.Json, Version=4.5.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed”之间的冲突。正在随意选择“Newtonsoft.Jso

    今天的程序莫名报错:  无法解决“Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed” ...

  7. C#下利用封包、拆包原理解决Socket粘包、半包问题(新手篇)

    介于网络上充斥着大量的含糊其辞的Socket初级教程,扰乱着新手的学习方向,我来扼要的教一下新手应该怎么合理的处理Socket这个玩意儿. 一般来说,教你C#下Socket编程的老师,很少会教你如何解 ...

  8. 解决如下json格式的字符串不能使用DataContractJsonSerializer序列化和反序列化 分类: JSON 2015-01-28 14:26 72人阅读 评论(0) 收藏

    可以解决如下json格式的字符串不能使用DataContractJsonSerializer反序列化 {     "ss": "sss",     " ...

  9. 解决MVC Json序列化的循环引用问题/EF Json序列化循引用问题---Newtonsoft.Json

    1..Net开源Json序列化工具Newtonsoft.Json中提供了解决序列化的循环引用问题: 方式1:指定Json序列化配置为 ReferenceLoopHandling.Ignore 方式2: ...

随机推荐

  1. Adding Security to an Existing Website

    The procedure earlier in this article relies on using the Starter Site template as the basis for web ...

  2. XMU 1615 刘备闯三国之三顾茅庐(三) 【欧拉函数+快速幂+欧拉定理】

    1615: 刘备闯三国之三顾茅庐(三) Time Limit: 1000 MS  Memory Limit: 128 MBSubmit: 45  Solved: 8[Submit][Status][W ...

  3. HDU1255 覆盖的面积 —— 求矩形交面积 线段树 + 扫描线 + 离散化

    题目链接:https://vjudge.net/problem/HDU-1255 给定平面上若干矩形,求出被这些矩形覆盖过至少两次的区域的面积. Input输入数据的第一行是一个正整数T(1<= ...

  4. [Codeforces 507E] Breaking Good

    [题目链接] https://codeforces.com/contest/507/problem/E [算法] 首先BFS求出1到其余点的最短路 , N到其余点的最短路,记为distA[]和dist ...

  5. bzoj3696

    3696: 化合物 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 245  Solved: 131[Submit][Status][Discuss] ...

  6. selenium3 + python - js 内嵌滚动处理

    一.js内嵌html <!DOCTYPE html><html lang="en"><head> <meta charset=" ...

  7. element-ui公用模态框自定义样式与scoped样式生效问题解决方案

    //先插如效果图 里面内容均为传进来的.包括取消与确定按钮,因为每个页面的绑定事件不一样. //下面这个图片为初始样式 //拖动模态框指令需要插件.详情看我下一篇,以下是地址 https://www. ...

  8. python爬虫BeautifulSoup库class_

    因为class是python的关键字,所以在写过滤的时候,应该是这样写: r = requests.get(web_url, headers=headers) # 向目标url地址发送get请求,返回 ...

  9. 《windows核心编程系列 》六谈谈线程调度、优先级和关联性

    线程调度.优先级和关联性 每个线程都有一个CONTEXT结构,保存在线程内核对象中.大约每隔20ms windows就会查看所有当前存在的线程内核对象.并在可调度的线程内核对象中选择一个,将其保存在C ...

  10. Windows API函数大全

    WindowsAPI函数大全(精心总结) 目录 1. API之网络函数... 1 2. API之消息函数... 1 3. API之文件处理函数... 2 4. API之打印函数... 5 5. API ...