使用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、如果一个类有带参构造函数,最好也为它提供一个无参构造函数,因为不知道什么地方可能就会用到
以上为个人经验,希望能给大家一个参考,也希望大家多多支持。