【发布时间】:2021-07-04 18:13:05
【问题描述】:
我有以下简单的 jUnit 测试:
class MyTest {
static class SingleField {
int rank;
SingleField(int rank) {
this.rank = rank;
}
@Override
public boolean equals(Object o) {
if(!(o instanceof SingleField)) {
return false;
} else {
return ((SingleField) o).rank == rank;
}
}
}
@Test
public void testBasicJacksonParsing() throws JsonProcessingException {
assertEquals(new SingleField(3), new ObjectMapper().readValue("{\"rank\" : 3}", SingleField.class));
}
}
不幸的是,在运行时,测试会抛出 MismatchedInputException 和消息:
Cannot construct instance of `com.drfirst.gear.user.context.util.AppUtilTest$SingleField` (although at least one Creator exists): cannot deserialize from Object value (no delegate- or property-based Creator)
at [Source: (String)"{"rank" : 3}"; line: 1, column: 2]
接受的答案here 似乎暗示需要一个全参数构造函数。我显然有一个。我还通过创建SingleField public 的构造函数来尝试相同的单元测试,并且我还将rank 更改为String,确保我还将String 我正在解析的"{\"rank\" : 3}" 更新为"{\"rank\" : \"3\"}"。抛出相同的Exception。
关于我在这里做错了什么的想法?
【问题讨论】:
标签: json jackson deserialization json-deserialization