【发布时间】:2022-01-09 13:00:15
【问题描述】:
在由Ext 类扩展的给定类Base 中。序列化工作完美,但问题是在尝试将序列化字符串反序列化回Ext 类时。我想反序列化回 Ext 类,包括所有 Base 类字段。
@Data、@NonFinal、@Value 都是 lombok 注解。
@Data
public class Base {
private String foo;
public Base( String foo) {
this.foo = foo;
}
}
@Value
@NonFinal
public class Ext extends Base {
private String bar;
public Ext(String foo, String bar) {
super(foo);
this.bar = bar;
}
}
反序列化方法
@Test
void shouldDeserialize() throws IOException {
ObjectMapper mapper = new ObjectMapper();
Ext ext = new Ext("foo", "bar");
String serializedExt = mapper.writeValueAsString(ext);
System.out.println(serializedExt); // {"foo":"foo","bar":"bar"}
// Throws err
base = mapper.readValue(serializedExt, Ext.class);
}
错误:com.fasterxml.jackson.databind.exc.InvalidDefinitionException:Cannot construct instance of ..Inhertence.Ext(no Creators, like default constructor, exist): cannot deserialize from Object value (no delegate- or property-based Creator) at [Source: (String)"{"foo":"foo","bar":"bar"}"; line: 1, column: 2]
【问题讨论】:
标签: java jackson deserialization jackson-databind