1
我正在將一些內容從reddit API反序列化爲POJO。我的目標是儘可能簡化代碼,因爲reddit中實體之間的JSON結構通常是相同的。反序列化JSON時確定類型
作爲一個例子,JSON反序列化鏈接對象看起來像這樣:
[
{
"kind": "Listing",
"data": {
"modhash": "",
"children": [
{
"kind": "t3",
"data": {
"title": "A sample link from reddit"
}
}
]
}
}
]
我可以反序列化此沒有問題,但由於書籤交易評論由具有不同的t1
一個kind
和不同的結構內在它下面的data
對象,我想重複使用JSON的相同類結構來包裝它,而不必創建具有一兩行差異的多個複製類。
我創建了一個空白界面RedditEntity
,並創建了一個實現它的類RedditLink
。我的問題是我不知道如何告訴傑克遜要反序列化的接口實現。通常我會使用@JsonSubType
註釋,但只適用於對象內的成員,而不是包裝它的成員。我也不知道如何編寫可以在類似級別上工作的自定義反序列化器,我可以從父對象中確定類型。
我的問題是,如何根據上面的kind
類型反序列化data
對象?
你看起來類似於此:http://stackoverflow.com/questions/17605524/jackson-delay-deserializing-field/17625688。請看我的答案。我認爲你可以重複使用它來解決你的問題。 –
@MichałZiober你的答案似乎依賴於JSON頂層包含你正在尋找的類型變量,我的例子沒有(它嵌套在三個層次下)的事實。 –