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. BZOJ_4591_[Shoi2015]超能粒子炮·改_Lucas定理

    BZOJ_4591_[Shoi2015]超能粒子炮·改_Lucas定理 Description 曾经发明了脑洞治疗仪&超能粒子炮的发明家SHTSC又公开了他的新发明:超能粒子炮·改--一种可以 ...

  2. 淘淘商城项目_同步索引库问题分析 + ActiveMQ介绍/安装/使用 + ActiveMQ整合spring + 使用ActiveMQ实现添加商品后同步索引库_匠心笔记

    文章目录 1.同步索引库问题分析 2.ActiveM的介绍 2.1.什么是ActiveMQ 2.2.ActiveMQ的消息形式 3.ActiveMQ的安装 3.1.安装环境 3.2.安装步骤 4.Ac ...

  3. 解决weblogic页面和控制台乱码问题

    转自:https://blog.csdn.net/u010995831/article/details/53283746 之前一直有碰到weblogic各种乱码问题,要不就是页面乱码,要不就是控制台乱 ...

  4. C#即时通讯系统设计与实现(一)

    最近学习了一下即时通讯,写了几天了,现在把遇到的问题和得到的心得在这里分享下. 即时通讯,C/S模式,在服务器上架设服务端,服务端是服务形式的,可以设置为开机自启动,客户端进行访问,可以安装在任意一台 ...

  5. pascal倒序输出

    program Project6; {$APPTYPE CONSOLE} uses SysUtils; var a,b,c,d:integer; begin { TODO -oUser -cConso ...

  6. ASP.NET Core MVC 打造一个简单的图书馆管理系统 (修正版)(一) 基本模型以及数据库的建立

    前言: 本系列文章主要为我之前所学知识的一次微小的实践,以我学校图书馆管理系统为雏形所作. 本系列文章主要参考资料: 微软文档:https://docs.microsoft.com/zh-cn/asp ...

  7. 洛谷P4114 Qtree1(树链剖分+线段树)

    传送门 LCT秒天秒地用什么树剖 这题可以算是树剖的比较裸的题目了 把每一条边的权值下放到他两边的点中深度较深的那个 然后直接用树剖+线段树带进去乱搞就可以了 //minamoto #include& ...

  8. JavaScript中this的使用方法总结

    JavaScript中this的使用方法总结 在JavaScript中,this的使用分为四种场景,具体请参考阮一峰老师关于this的讲解 第一种情况是纯函数使用 var x =1 ; functio ...

  9. PhpStorm Xdebug远程调试环境搭建原理分析及问题排查

    2017年05月26日  经验心得 目录   一. 环境介绍 二. 远程环境配置 2.2 Xdebug安装 2.3 配置 三. 本地phpstorm配置 3.1 下载远程代码 3.2 添加php解释器 ...

  10. 环境变量解释以及在Linux下的环境变量设置

    一.环境变量解释 环境变量是什么? 引用百度百科里面的解释:环境变量是操作系统中一个具有特定名字的对象,它包含了一个或者多个应用程序所将使用到的信息.例如Windows系统中的path环境变量,当要求 ...