我有一个像这样的JSON:
objects:[{
id:"p452365",
type:"photo",
link:"http://xxx.zz"
},
{
id:"v7833",
type:"video",
link:"http://xxx.yy",
length:"4.12"
}
]
在超类Entity
中,有2个实例变量:id和type。在我的扩展XmlAdapter
类中,我尝试将我的Entity实例转换为ex的子类型。 Photo
public HashMap<String, List<Column>> unmarshal(Feeds f) throws Exception {
for(Feed feed : f.getFeeds()){
System.out.println("Entity id for feed : " + feed.getId());
for(Entity e:feed.getObjects()){
if (e instanceof Photo){
// Of course it's not
}
}
}
return (HashMap<String, List<Column>>)fm.map(f.getFeeds());
}
当然e不是Photo的实例,我在那里拍了一张。:) 我想做的是在某个时候干扰JAXB进程并根据JSON中的类型值解组。我想知道在哪里以及如何。
答案 0 :(得分:0)
我之前对类似问题的回答可能对此有所帮助。本质上,它使用EclipseLink JAXB(MOXy)中的@XmlDescrimatorNode。注意我是MOXy技术主管。
您也可以使用XmlAdapter执行此操作。 AdaptedEntity将拥有Entity及其子类的所有属性。