跟进这个问题:问题在这里
@JsonIdentityReference(alwaysAsId = true)
并且
@JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class)
从序列化结束时效果很好,但在反序列化时效果不佳,因为它无法解析对象 ID 引用。
有没有办法让它反序列化?编写自定义反序列化器似乎有点矫枉过正。
您可以使用简单的 setter 反序列化器,而不是自定义反序列化器:
public class Container {
@JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class, property = "id")
@JsonIdentityReference(alwaysAsId = true)
private Foo foo;
public Foo getFoo() {
return foo;
}
public Container setFoo(Foo foo) {
this.foo = foo;
return this;
}
@JsonProperty("foo")
public void setFoo(String id) {
foo = new Foo().setId(id);
}
}
{"foo":"id1"}
使用此方法正确序列化示例字符串Jackson 2.5.2