Jackson 无法反序列化单个字段 class,尽管 Creator 存在
Jackson cannot deserialize single field class, although Creator exists
我有以下简单的 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]
接受的答案 似乎暗示需要一个全参数构造函数。我显然有一个。我还通过构造 SingleField
public
尝试了相同的单元测试,并且我还将 rank
更改为 String
,确保我也更新了 String
我正在从 "{\"rank\" : 3}"
解析到 "{\"rank\" : \"3\"}"
。同样 Exception
抛出。
关于我在这里做错了什么的想法?
事实证明,我的字段需要 public
个设置器。
我有以下简单的 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]
接受的答案SingleField
public
尝试了相同的单元测试,并且我还将 rank
更改为 String
,确保我也更新了 String
我正在从 "{\"rank\" : 3}"
解析到 "{\"rank\" : \"3\"}"
。同样 Exception
抛出。
关于我在这里做错了什么的想法?
事实证明,我的字段需要 public
个设置器。