【问题标题】:MOXy DynamicEntity with JSON?带有 JSON 的 MOXy DynamicEntity?
【发布时间】:2016-01-21 04:07:07
【问题描述】:

我正在尝试使用 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 执行此操作感到非常困惑。

【问题讨论】:

    标签: java jersey jersey-2.0 moxy


    【解决方案1】:

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

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

    或者你可以直接使用DynamicJAXBContextFactory

    虽然动态 MOXY 不需要任何用于绑定(POJO)的 java 类,但您需要在创建上下文时提供绑定元数据。它可以是描述映射的 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-23
      相关资源
      最近更新 更多