2014-12-07 57 views
2

我想要將包含接口的對象的JSON表示反序列化爲其屬性之一。對象的類看起來像這樣:反序列化具有接口屬性而不使用註釋的JSON類

class A { 
    B b; 
} 

Interface B { 
    //some content 
} 
Class C implements B { 
} 
Class D implements B { 

} 

我認爲傑克遜是最好的做到這一點。

最簡單的方法是在解決方案here中提到的在接口B上面添加一些註釋。但是這裏的問題是我沒有權限改變任何這些類或接口。所以我不能把註釋放在A類中。還有另一種方法可以實現嗎?

+0

您必須使用[自定義反序列化器](http://www.baeldung.com/jackson-deserialization)。 – 2014-12-07 10:27:21

+0

@BoristheSpider是的,我想過寫一個類與A完全相同的類,並將json反序列化爲該對象。但接下來我將不得不手動設置類A對象的每個成員 – Alex 2014-12-07 10:50:25

+0

我不理解您的評論。在「ObjectMapper」中添加一個反序列化器,並在其中添加自定義邏輯。 – 2014-12-07 12:17:00

回答

1

快速骯髒的解決方法:

你可以反序列化的C類第一,並設置爲A類的屬性

形式化方法:

這是一種反序列化的戰略,您可能需要確定無論是C類還是D類的JSON內容,這都是自定義的反序列化

相關問題