JAX-B/JSON:继承、复合模式、解组异常

JAX-B/JSON:继承、复合模式、解组异常,json,inheritance,jaxb,jersey,unmarshalling,Json,Inheritance,Jaxb,Jersey,Unmarshalling,我正在开发一个RESTfulWebService(NetBeans+Jersey),并试图为移动应用程序(Android)实现一个UI描述(标签、按钮等) 我使用复合设计模式来创建UIContainer、UIBasicElements、UIComplexeElements等等 我的问题是: UIC容器包含一个 私有列表组件 如果我加上 @XmlSeeAlso( { UIBasicLabel.class, UIBasicIcon.class, UIBasicButto

我正在开发一个RESTfulWebService(NetBeans+Jersey),并试图为移动应用程序(Android)实现一个UI描述(标签、按钮等)

我使用复合设计模式来创建UIContainer、UIBasicElements、UIComplexeElements等等

我的问题是: UIC容器包含一个
私有列表组件

如果我加上

@XmlSeeAlso( { 
    UIBasicLabel.class, 
    UIBasicIcon.class, 
    UIBasicButton.class,
    ... 
} )
对于类
公共抽象类UIComponent
,我得到了我想要的JSON格式,例如

{ ..., uiComponents : [ {Label} , {Icon} , ... ] , ... }
我可以在我的Android客户端上处理。 我还注意到,JSON输出中添加了一个
@type:ClassName
属性。 这不是为了给解组器一个提示,使用什么类吗

对于Jersey客户端,我在解组时遇到一个异常:

Exception in thread "main" javax.ws.rs.WebApplicationException: javax.xml.bind.UnmarshalException
 - with linked exception:
[com.sun.istack.internal.SAXParseException2; lineNumber: 0; columnNumber: 0; Unable to create an instance of de.materna.mobile.management.entities.uidescription.UIComponent]
据我所知,我需要将UIContainer.class修改为

@XmlElementRef
private List<UIComponent> uiComponents;
而不是

{ ..., uiComponents : [ {Label} , {Icon} , ... ] , ... }
有没有办法做到这两个方面

多谢各位


注:抱歉我的英语不好-我希望阅读/理解不太难

从描述对象模型的XML模式开始,然后运行xjc或wsimport(来自JDK的工具),这将生成Java类。

感谢您的回答。然而,经过一点研究,我决定使用Jackson JSON库。它似乎更适合我的需要,并且很容易集成到我的项目中。
{ ..., uiComponents : [ {Label} , {Icon} , ... ] , ... }