欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-03-13 11:15:48
objectmapper json转换为复杂的实体类实体类主实体类* getrigsmsresult* 里面的* smscontentlist 是一个list类型的的 smscontentsmscon...

objectmapper json转换为复杂的实体类

实体类

主实体类* getrigsmsresult* 里面的* smscontentlist 是一个list类型的的 smscontentsmscontent *集合。

/**
 * 
 * 
 * @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方法省略
}
/**
 * 组内短信的消息内容
 * 
 * @author 李关钦
 * @version 2017年2月24日
 */
public class smscontent {
    private string content;
    private string part;
    private string receivetime;
    //getter、setter方法省略
}

使用objectmapper转换json为实体类

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

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