16

跟进这个问题:问题在这里

@JsonIdentityReference(alwaysAsId = true)并且 @JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class)从序列化结束时效果很好,但在反序列化时效果不佳,因为它无法解析对象 ID 引用。

有没有办法让它反序列化?编写自定义反序列化器似乎有点矫枉过正。

4

1 回答 1

11

您可以使用简单的 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

于 2015-04-20T07:48:26.670 回答