現象
今天在調http接口時,接收到的返回值一直是null,debug後發現系統拋了“No suitable constructor found for type 。。。”,說明這個類沒有無參數構造函數(由於建了別的構造函數,覆蓋了無參構造函數),拋異常後代碼熔斷,進入fallback(熔斷處理方法)方法,這個方法默認返回null,所以這個對象爲null,而且這個異常被捕捉了,所以日誌上看不出來。
private List<Image> detailImages; //我在response中添加了這個屬性
public static class Image {
private String smallUrl;
private String largeUrl;
private int largeUrlWidth;
private int largeUrlHeight;
//沒有無參構造函數
public Image(String smallUrl, String largeUrl) {
this.smallUrl = smallUrl;
this.largeUrl = largeUrl;
}
public Image(String smallUrl, String largeUrl, int largeUrlWidth, int largeUrlHeight) {
this.smallUrl = smallUrl;
this.largeUrl = largeUrl;
this.largeUrlWidth = largeUrlWidth;
this.largeUrlHeight = largeUrlHeight;
}
public int getLargeUrlWidth() {
return largeUrlWidth;
}
public void setLargeUrlWidth(int largeUrlWidth) {
this.largeUrlWidth = largeUrlWidth;
}
public int getLargeUrlHeight() {
return largeUrlHeight;
}
public void setLargeUrlHeight(int largeUrlHeight) {
this.largeUrlHeight = largeUrlHeight;
}
public String getSmallUrl() {
return smallUrl;
}
public void setSmallUrl(String smallUrl) {
this.smallUrl = smallUrl;
}
public String getLargeUrl() {
return largeUrl;
}
public void setLargeUrl(String largeUrl) {
this.largeUrl = largeUrl;
}
}
原因
json在轉對象反序列化的時候,需要先初始化對象,默認調用無參構造函數,再賦值,所以拋出異常。
解決辦法
添加無參構造函數