利用ObjectMapper readValue()和泛型解决复杂json结构

Posted 杨子sjz-博客

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了利用ObjectMapper readValue()和泛型解决复杂json结构相关的知识,希望对你有一定的参考价值。

  1 import com.dj.fss.vo.MessageListVO;
  2 import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
  3 import com.fasterxml.jackson.core.JsonParseException;
  4 import com.fasterxml.jackson.databind.JsonMappingException;
  5 import com.fasterxml.jackson.databind.ObjectMapper;
  6 
  7 import java.io.IOException;
  8 import java.util.List;
  9 
 10 
 11 /**
 12  * ObjectMapper readValue()方法
 13  * 利用泛型解决复杂json结构
 14  * @JsonIgnoreProperties(ignoreUnknown = true) 没有实例化的属性不自动赋值 没有这个回报异常
 15  *
 16  * @param <T>
 17  */
 18 @JsonIgnoreProperties(ignoreUnknown = true)
 19 public class PageBean<T extends Object> {
 20     private List<MessageListVO> messageList;
 21 
 22     private pageinfo pageinfo;
 23 
 24     public PageBean.pageinfo getPageinfo() {
 25         return pageinfo;
 26     }
 27 
 28     public void setPageinfo(PageBean.pageinfo pageinfo) {
 29         this.pageinfo = pageinfo;
 30     }
 31 
 32     public List<MessageListVO> getMessageList() {
 33         return messageList;
 34     }
 35 
 36     public void setMessageList(List<MessageListVO> messageList) {
 37         this.messageList = messageList;
 38     }
 39 
 40     @JsonIgnoreProperties(ignoreUnknown = true)
 41     public class pageinfo{
 42         private int total;
 43 
 44         public int getTotal() {
 45             return total;
 46         }
 47 
 48         public void setTotal(int total) {
 49             this.total = total;
 50         }
 51     }
 52 
 53 
 54 
 55 
 56     private static String jsonString = "{\\n" +
 57             "        \\"messageList\\": [\\n" +
 58             "            {\\n" +
 59             "                \\"id\\": \\"7\\",\\n" +
 60             "                \\"sendCompany\\": \\"广州机场\\",\\n" +
 61             "                \\"recvCompany\\": \\"中国南航航空公司\\",\\n" +
 62             "                \\"messageType\\": \\"1001\\",\\n" +
 63             "                \\"sendTime\\": \\"2018-07-12 16:43:06\\"\\n" +
 64             "            },\\n" +
 65             "            {\\n" +
 66             "                \\"id\\": \\"4\\",\\n" +
 67             "                \\"sendCompany\\": \\"广州机场\\",\\n" +
 68             "                \\"recvCompany\\": \\"中国南航航空公司\\",\\n" +
 69             "                \\"messageType\\": \\"1002\\",\\n" +
 70             "                \\"sendTime\\": \\"2018-07-12 15:49:02\\"\\n" +
 71             "            }\\n" +
 72             "        ],\\n" +
 73             "        \\"pageinfo\\": {\\n" +
 74             "            \\"pageNum\\": 1,\\n" +
 75             "            \\"pageSize\\": 3,\\n" +
 76             "            \\"size\\": 2,\\n" +
 77             "            \\"startRow\\": 1,\\n" +
 78             "            \\"endRow\\": 2,\\n" +
 79             "            \\"total\\": 2,\\n" +
 80             "            \\"pages\\": 1,\\n" +
 81             "            \\"list\\": null,\\n" +
 82             "            \\"prePage\\": 0,\\n" +
 83             "            \\"nextPage\\": 0,\\n" +
 84             "            \\"isFirstPage\\": true,\\n" +
 85             "            \\"isLastPage\\": true,\\n" +
 86             "            \\"hasPreviousPage\\": false,\\n" +
 87             "            \\"hasNextPage\\": false,\\n" +
 88             "            \\"navigatePages\\": 8,\\n" +
 89             "            \\"navigatepageNums\\": [\\n" +
 90             "                1\\n" +
 91             "            ],\\n" +
 92             "            \\"navigateFirstPage\\": 1,\\n" +
 93             "            \\"navigateLastPage\\": 1,\\n" +
 94             "            \\"firstPage\\": 1,\\n" +
 95             "            \\"lastPage\\": 1\\n" +
 96             "        }\\n" +
 97             "    }";
 98 
 99     public static void main(String[] args) throws JsonParseException, JsonMappingException, IOException {
100 
101 
102 
103         ObjectMapper mapper = new ObjectMapper();
104         PageBean<MessageListVO> strPageBean = mapper.readValue(jsonString, PageBean.class);
105         System.out.println(strPageBean.getMessageList().get(0));
106         System.out.println(strPageBean.getMessageList().get(1));
107         System.out.println(strPageBean.getPageinfo().getTotal());
108     }
109 
110 }

 

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

以上是关于利用ObjectMapper readValue()和泛型解决复杂json结构的主要内容,如果未能解决你的问题,请参考以下文章

com.fasterxml.jackson.databind.ObjectMapper. .readValue .convertValue

ObjectMapper将json转对象报错处理

ObjectMapper.readValues() 对错误 JSON 输入的奇怪行为

jackson的objectMapper反序列化复杂对象TypeReference

Jackson

ObjectMapper如果某些字段无法转换为对象的默认值