invalid Definition Exception

Intro error message

這篇介紹使用jackson反序列化時出現com.fasterxml.jackson.databind.Exc.invalidDefinitionException:(No Creators, Like Default Construct, Exist): Cannot Deserialize From Object Value (No Delegate- Or Property-Based Creator)。

Example Code

1
2
3
4
5
6
7
8
9
10
11
12
13

List<Element> list = JSONUtils.parseJsonToInstanceList(jsonString, Element.class); -> 這句反序列化會有錯誤

public static <T> List<T> parseJsonToInstanceList(String jsonInput, Class<T> clazz) {
try {
return JSONUtils.readValue(jsonInput,
TypeFactory.defaultInstance().constructCollectionType(ArrayList.class, clazz));
} catch (IOException e) {
LogUtils.parseError.error("jsonInput: " + jsonInput, e);
throw new UncheckedIOException(e);
}
}

Reason

1
Element 物件少了沒有參數的建構子

Solution

1
2
3
4
5
6
public class Element {

public Element() {
//加上這個建構子
}
}