2011-02-24 111 views
2

一个子类我有一个JSON是这样的:解组与JAXB

objects:[{ 
    id:"p452365", 
    type:"photo", 
    link:"http://xxx.zz" 
}, 
{ 
    id:"v7833", 
    type:"video", 
    link:"http://xxx.yy", 
    length:"4.12" 
} 
] 

在超Entity,还有就是2个实例变量:ID和类型。在我扩展的XmlAdapter类中,我尝试将我的实体实例转换为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()); 
    } 

当然电子商务不是一个instanceof照片,我花了一枪那里。:) 我想做的事就是根据JSON.I难怪类型值有时干扰JAXB过程,解组在哪里以及如何。

回答

0

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

你也可以用XmlAdapter做到这一点。 AdaptedEntity将拥有来自Entity及其子类的所有属性。

+0

之前,我改变JAXB IMPL,我真的想给第二个选项的回答一个try.Thanks。 – barand

+0

我改变了主意。现在我正在使用MOXY.I将jaxb.properties文件放入我的域类所在的包中。但是我得到这个异常:java.lang.ClassNotFoundException:org.eclipse.persistence.jaxb.JAXBContextFactory.Do you have any idea?Btw我目前正在使用RestEasy。 – barand