使用JAXB解组到子类

使用JAXB解组到子类,jaxb,Jaxb,我有一个类似这样的JSON: objects:[{ id:"p452365", type:"photo", link:"http://xxx.zz" }, { id:"v7833", type:"video", link:"http://xxx.yy", length:"4.12" } ] 在超类实体中,有两个实例变量:id和type。在扩展的XmlAdapter类中,我尝试将实体实例强制转换为例如Photo public HashMap<Str

我有一个类似这样的JSON:

objects:[{
   id:"p452365",
   type:"photo",
   link:"http://xxx.zz"
},
{
   id:"v7833",
   type:"video",
   link:"http://xxx.yy",
   length:"4.12"
}
]
在超类
实体
中,有两个实例变量:id和type。在扩展的
XmlAdapter
类中,我尝试将实体实例强制转换为例如
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());
    }
public HashMap unmarshal(Feeds f)引发异常{
for(提要:f.getFeeds()){
System.out.println(“提要的实体id:+feed.getId());
对于(实体e:feed.getObjects()){
如果(照片的e实例){
//当然不是
}
}
}
return(HashMap)fm.map(f.getFeeds());
}
当然e不是一张照片,我在那里拍了一张照片。:)
我想做的是在某个时候干扰JAXB进程,并根据JSON中的类型值进行解组。我想知道在哪里以及如何解组。

我以前对类似问题的一个回答可能会在这里有所帮助。本质上,它是在EclipseLink JAXB(MOXy)中使用@XmlDescriptionOrNode。请注意,我是莫西科技公司的负责人

您也可以使用XmlAdapter来实现这一点。AdaptedEntity将具有实体及其子类的所有属性


我以前对类似问题的一个回答可能会在这里有所帮助。本质上,它是在EclipseLink JAXB(MOXy)中使用@XmlDescriptionOrNode。请注意,我是莫西科技公司的负责人

您也可以使用XmlAdapter来实现这一点。AdaptedEntity将具有实体及其子类的所有属性


在更改JAXB impl之前,我非常想尝试第二个选项。谢谢您的回答。我改变了主意。现在我正在使用MOXy。我将JAXB.properties文件放入域类所在的包中。但是我得到了这个异常:java.lang.ClassNotFoundException:org.eclipse.persistence.jaxb.JAXBContextFactory。你知道吗?顺便说一句,我目前正在使用RestEasy。在我更改jaxb impl之前,我真的想尝试一下第二个选项。谢谢你的回答。我改变了主意。现在我正在与MOXy合作。我将jaxb.properties文件放入我的域类所在的包中。但是我得到了这个异常:java.lang.ClassNotFoundException:org.eclipse.persistence.jaxb.JAXBContextFactory。你知道吗?顺便说一句,我目前正在使用RestEasy。