使用JAXB解组到子类

时间:2011-02-24 03:08:30

标签: jaxb

我有一个像这样的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中的类型值解组。我想知道在哪里以及如何。

1 个答案:

答案 0 :(得分:0)

我之前对类似问题的回答可能对此有所帮助。本质上,它使用EclipseLink JAXB(MOXy)中的@XmlDescrimatorNode。注意我是MOXy技术主管。

您也可以使用XmlAdapter执行此操作。 AdaptedEntity将拥有Entity及其子类的所有属性。

相关问题