使用JSON MOXy DynamicEntity?

时间:2016-01-21 04:07:07

标签: java jersey jersey-2.0 moxy

我正在尝试使用DynamicEntity来解组一些简单的JSON,而且它完全是对我的轰炸。文档相当稀疏,甚至可以这样做吗?我基本上是这样做的;

JAXBContext jaxbContext = JAXBContext.newInstance(DynamicEntity.class);
DynamicEntity entity = (DynamicEntity) jaxbContext.createUnmarshaller().unmarshal(entityStream);

这可以直接来自此处的XML文档:https://wiki.eclipse.org/EclipseLink/Examples/MOXy/Dynamic/XmlToDynamicEntity

我得到了; 引起:

com.sun.xml.internal.bind.v2.runtime.IllegalAnnotationsException: 1 counts of IllegalAnnotationExceptions
org.eclipse.persistence.dynamic.DynamicEntity is an interface, and JAXB can't handle interfaces.
    this problem is related to the following location:
        at org.eclipse.persistence.dynamic.DynamicEntity

有没有人设法让这个工作?我基本上试图避免构建POJO,因为我的后端存储无论如何都不关心它们,我只是想反序列化为通用对象并传递它。在.NET中,我只使用dynamic,但我对如何使用Moxy做这件事感到非常难过。

1 个答案:

答案 0 :(得分:0)

要获得DynamicEntity,必须使用DynamicJAXBContext。可以使用 jaxb.properties 文件中的以下内容进行配置:

javax.xml.bind.context.factory=org.eclipse.persistence.jaxb.dynamic.DynamicJAXBContextFactory

或者您可以直接使用DynamicJAXBContextFactory

虽然Dynamic MOXY不需要任何Java类用于绑定(POJO),但您需要在创建上下文时提供绑定元数据。它可以是描述映射的XSD或binding.xml。因此,不需要使用JAXBContext.newInstance(DynamicEntity.class)创建上下文,而是需要使用其他方法 - 请参阅下面的链接。

请参阅此处的示例(使用XSD): https://wiki.eclipse.org/EclipseLink/Examples/MOXy/Dynamic/JAXBContextFromXMLSchema

使用binding.xml和JSON的

或更复杂的示例: https://wiki.eclipse.org/EclipseLink/Examples/MOXy/Dynamic/Flickr