杰克逊反序列化JsonIdentityReference(alwaysAsId = true)

psc*_*egr 16 java json jackson

关注这个问题:问题在这里

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

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

mty*_*urt 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);
    }
}
Run Code Online (Sandbox Code Playgroud)

{"foo":"id1"}使用此方法正确序列化示例字符串Jackson 2.5.2