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顶层包含你正在寻找的类型变量,我的例子没有(它嵌套在三个层次下)的事实。 –