16

この質問のフォローアップ:質問はこちら

@JsonIdentityReference(alwaysAsId = true)シリアル化 @JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class)の終わりからはうまく機能しますが、オブジェクト ID 参照を解決できないため、逆シリアル化するときはあまりうまくいきません。

これをデシリアライズする方法はありますか?カスタム デシリアライザーを作成するのはやり過ぎのように思えます。

4

1 に答える 1

11

カスタム デシリアライザーの代わりに、単純なセッター デシリアライザーを使用できます。

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 に答える