使用ObjectMapper把Json轉換為複雜的實體類
阿新 • • 發佈:2021-08-18
ObjectMapper on轉換為複雜的實體類
實體類
主實體類* GetRigShttp://www.cppcns.commsResult* 裡面的* 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<Liswww.cppcns.comt<GetRigSmsResult>>() { });
轉換的時候使用new TypeReference<List<GetRigSmsResult>>() { }可以把含有list的巢狀物件也給成功轉換http://www.cppcns.com。
objectmapper 巢狀json轉物件報錯
原因
是因為實體類物件沒有加無參構造器
1、對於沒有建構函式的類,編譯器會為其提供一個預設的無參建構函式;
2、如果顯示的為類提供了建構函式,編譯器就不會再給提供預設構造函數了;
3、ObjectMapper將JSON字串轉換為java物件的時候,需要呼叫類的無參建構函式(分配相關地址?)
4、如果一個類有帶參建構函式,最好也為它提DlBGXwGt供一個無參建構函式,因為不知道什麼地方可能就會用到
以上為個人經驗,希望能給大家一個參考,也希望大家多多支援我們。