利用ObjectMapper readValue()和泛型解决复杂json结构
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结构的更多相关文章
- 利用jackson-databind,复杂对象对象和json数据互转
如果简单对象,那么转换的方式比较多,这里指的复杂对象,是指对象里面存在cycle引用,比如: /** * @author ding * */@Entity@Table(name = "ser ...
- Jackson ObjectMapper readValue过程
1.整体调用栈 2.看一下调用栈的两个方法 resolve 方法中通过 Iterator i$ = this._beanProperties.iterator() 遍历属性的所有子属性,缓存对应的 d ...
- ObjectMapper用于将java对象转换为json格式数据以及JSONObject对象解析json格式数据
ObjectMapper objectMapper = new ObjectMapper(); //反序列化的时候如果多了其他属性,不抛出异常 objectMapper.configure(Deser ...
- 利用nginx做反向代理解决前端跨域问题
最近朋友再群里提了一个问题,他们公司给他提供了一个获取数据的接口,在浏览器访问这个接口能获取到json数据,但是放在项目里使用ajax就产生了跨域问题,一般这个需要提供接口的后台方面需要做跨域处理,但 ...
- 利用Python的三元表达式解决Odoo中工资条中城镇、农村保险的问题
Python中没有像C#中有三元表达式 A?B:C 但在python中可以通过 A if condition else B 的方式来达到同样的效果. 例如 : 1 if True else 0 输出 ...
- 无法解决“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” ...
- C#下利用封包、拆包原理解决Socket粘包、半包问题(新手篇)
介于网络上充斥着大量的含糊其辞的Socket初级教程,扰乱着新手的学习方向,我来扼要的教一下新手应该怎么合理的处理Socket这个玩意儿. 一般来说,教你C#下Socket编程的老师,很少会教你如何解 ...
- 解决如下json格式的字符串不能使用DataContractJsonSerializer序列化和反序列化 分类: JSON 2015-01-28 14:26 72人阅读 评论(0) 收藏
可以解决如下json格式的字符串不能使用DataContractJsonSerializer反序列化 { "ss": "sss", " ...
- 解决MVC Json序列化的循环引用问题/EF Json序列化循引用问题---Newtonsoft.Json
1..Net开源Json序列化工具Newtonsoft.Json中提供了解决序列化的循环引用问题: 方式1:指定Json序列化配置为 ReferenceLoopHandling.Ignore 方式2: ...
随机推荐
- js数组清空和去重
1.splice var ary = [1,2,3,4]; ary.splice(0,ary.length); console.log(ary); // 输出 Array[0],空数组,即被清空了 2 ...
- mongo12---手动预先分片
手动预先分片:(每个片上的数据是不一样的,是分开存,不是做备份) 自动分片有可能短期内某个片的数据过大,硬盘不够用了.能否100000-30000就到1号片. //以shop.user表为例,先声明s ...
- SPFA 算法详解( 强大图解,不会都难!) (转)
适用范围:给定的图存在负权边,这时类似Dijkstra等算法便没有了用武之地,而Bellman-Ford算法的复杂度又过高,SPFA算法便 派上用场了. 我们约定有向加权图G不存在负权回路,即最短路径 ...
- LOJ114_k 大异或和_线性基
LOJ114_k 大异或和_线性基 先一个一个插入到线性基中,然后高斯消元. 求第K小就是对K的每一位是1的都用对应的线性基的一行异或起来即可. 但是线性基不包含0的情况,因此不能确定能否组成0,需要 ...
- FWT [BZOJ 4589:Hard Nim]
4589: Hard Nim Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 275 Solved: 152[Submit][Status][Disc ...
- Goland软件使用教程(一)
Goland软件使用教程(一) Goland是由JetBrains公司旨在为go开发者提供的一个符合人体工程学的新的商业IDE.这个IDE整合了IntelliJ平台的有关go语言的编码辅助功 ...
- bzoj3668 [Noi2014]起床困难综合症——贪心
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3668 一开始想着倒序推回去看看这一位能不能达到来着,因为这样好中途退出(以为不这样会T): ...
- cookie绕过验证码登录
#coding:utf-8 ''' cookie绕过验证码登录,第一步先访问登录页面获取登录前的cookie,第二步用fiddler抓到的手动登录的cookie加入cookie中,登录成功,第三步登录 ...
- robotframework 随机选中下拉框中的值
示例脚本: click element id=provinceName #点击地区 省 wait until element is enabled xpath=.//*[@id='provinceNa ...
- poj 2411((多米诺骨牌问题))
Mondriaan's Dream Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 12854 Accepted: 748 ...