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. 算法4-10:BST平衡二叉树的删除操作

    偷懒方法 public void delete(Key key) { insert(key, null); } 这样的方法就是将key相应的值覆盖成null.当读取该键值的时候将会返回null. 这是 ...

  2. js闭包的本质

    js之所以会有闭包,是因为js不同于其他规范的语言,js允许一个函数中再嵌套子函数,正是因为这种允许函数嵌套,导致js出现了所谓闭包. function a(){ function b(){ }; b ...

  3. JDK安装以及配置环境变量的步骤

    ---恢复内容开始--- 一.JDK安装 JDK下载链接:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads ...

  4. mysql06---权限控制

    mysql权限管理: mysql的权限控制,首先在user表判断有没有权限连,连上后看有没有全局权限.然后看db表有哪些库级别的权限.然后看tables_priv表有哪些表级别的权限.最后还可以看有哪 ...

  5. YTU 2440: C++习题 复数类--重载运算符+,-,*,/

    2440: C++习题 复数类--重载运算符+,-,*,/ 时间限制: 1 Sec  内存限制: 128 MB 提交: 1189  解决: 774 题目描述 定义一个复数类Complex,重载运算符& ...

  6. BZOJ_1195_[HNOI2006]最短母串_AC自动机+BFS+分层图

    BZOJ_1195_[HNOI2006]最短母串_AC自动机+BFS+分层图 Description 给定n个字符串(S1,S2,„,Sn),要求找到一个最短的字符串T,使得这n个字符串(S1,S2, ...

  7. [NOI 2012] 美食节

    [题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=2879 [算法] 首先 , 将每种食物建一个点 , 将每位厨师做的每一道菜建一个点 建 ...

  8. Apollo自动驾驶框架试玩

    2017年7月5日,百度举行了AI开发者大会,在会上发布了Apollo项目,并进行了演示,该项目在Github上已经能够被访问.出于一个程序员的好奇,昨天试玩了一把,确实不错. http://apol ...

  9. jquery中跳出each循环

    or循环   VS   jquery.each continue       return true break          return false

  10. asp.net mvc5 使用百度ueditor 本编辑器完整示例(下)配置上传播放视频

    通过 asp.net mvc5 使用百度ueditor 本编辑器完整示例(上)介绍,可以上传图片到服务器了,也可以上传小的视频文件,并且由百度编辑器自动加入html5<video>标签播放 ...