Jackson:Cannot construct instance of **** (although at least one Creator exists):
阿新 • • 發佈:2021-01-25
Jackson:nested exception is java.lang.IllegalArgumentException: Cannot construct instance of **** (although at least one Creator exists):
要進行 json 轉換的物件:
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
/**
* 獲取 DOM 資訊的資訊傳遞物件
*
* @author : LiuXianghai on 2021/1/20
* @Created : 2021/01/20 - 15:42
* @Project : GetDataService
*/
@Data
public class ParseDomMessage {
@JsonCreator
public ParseDomMessage(@JsonProperty("message") String message,
@JsonProperty("startFlag") Boolean isStartParse,
@JsonProperty("finishedFlag") Boolean isParseEnd,
@JsonProperty("count") Long count) {
this.isParseEnd = isParseEnd;
this.isStartParse = isStartParse;
this.message = message;
this.count = count;
}
@JsonCreator
public ParseDomMessage(){}
// 傳遞的資訊內容
@JsonProperty("message")
private String message;
// 是否開始獲取對應 DOM
@JsonProperty("startFlag")
private Boolean isStartParse;
// 是否已經獲取了對應的 DOM
@JsonProperty("finishedFlag")
private Boolean isParseEnd;
/*
計數標記, 每次傳送的訊息可能會被重新接受,
因此這個屬性的作用就是每次增加技術來避免可能會重複接受到同一訊息的問題
*/
@JsonProperty("count")
private Long count;
}
待轉換的 json資料:
{"message":"Start parse dom","startFlag":true,"finishedFlag":false,"count":1}
在使用 Jackson 的 ObjectMapper.convertValue()
方法對 json 資料進行轉換時, 出現了以下異常:
解決辦法, 使用 ObjectMapper.readValue()
代替 ObjectMapper.convertValue()
對JSON資料進行反轉, 即可解決問題。