好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

使用ObjectMapper把Json转换为复杂的实体类

ObjectMapper Json转换为复杂的实体类

实体类

主实体类* GetRigSmsResult* 里面的* smsContentList 是一个list类型的的 SmsContentSmsContent *集合。

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

/**

  *

  *

  * @author 李关钦

  * @version 2017年3月14日

  */

public class GetRigSmsResult {

     private String dataCoding;

     private String messageParts;

     private int pushFlag;

     private String receivePhoneNumber;

     private String receiveTime;

     private String sendPhoneNumber;

     private String sendTime;

     private String shortMessageId;

     private int state;

     @JsonProperty (value = "smsContent" )

     private String smsContent;

     // @JsonIgnore

     private List<SmsContent> smsContentList;

     //getter、setter方法省略

}

?

1

2

3

4

5

6

7

8

9

10

11

12

/**

  * 组内短信的消息内容

  *

  * @author 李关钦

  * @version 2017年2月24日

  */

public class SmsContent {

     private String content;

     private String part;

     private String receiveTime;

     //getter、setter方法省略

}

使用ObjectMapper转换json为实体类

?

1

2

3

ObjectMapper mapper = new ObjectMapper();

String reqBody = mapper.writeValueAsString(param);

List<GetRigSmsResult> resultList =  mapper.readValue(respBody, new TypeReference<List<GetRigSmsResult>>() {  });

转换的时候使用new TypeReference<List<GetRigSmsResult>>() { }可以把含有list的嵌套对象也给成功转换。

objectmapper 嵌套json转对象报错

原因

是因为实体类对象没有加无参构造器

1、对于没有构造函数的java类,编译器会为其提供一个默认的无参构造函数;

2、如果显示的为类提供了构造函数,编译器就不会再给提供默认构造函数了;

3、ObjectMapper将JSON字符串转换为java对象的时候,需要调用类的无参构造函数(分配相关地址?)

4、如果一个类有带参构造函数,最好也为它提供一个无参构造函数,因为不知道什么地方可能就会用到

以上为个人经验,希望能给大家一个参考,也希望大家多多支持。

原文链接:https://blog.csdn.net/u010663021/article/details/72638260

查看更多关于使用ObjectMapper把Json转换为复杂的实体类的详细内容...

  阅读:36次