2013-08-19 111 views
15

對這個問題的後續行動:Question here傑克遜反序列化JsonIdentityReference(alwaysAsId =真)

@JsonIdentityReference(alwaysAsId = true)@JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class)從序列結束的偉大工程,但不是那麼好當談到時間反序列化,因爲它不能解析對象ID參考。

有沒有辦法讓這反序列化?編寫一個自定義的反序列化器看起來好像過火了。

回答

8

而不是自定義解串器,你可以用一個簡單的二傳手解串器:

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

+0

連載如果富比更多的屬性這不起作用只是id,因此現有的實例必須聯繫起來。 – koppor