重命名"键入"来自JSON moxy输出

时间:2015-04-06 14:12:08

标签: java json eclipselink marshalling moxy

我正在努力解决Moxy如何处理对象的继承问题。

特别是,我需要重命名Moxy在子类型中添加的默认type元素,因为它阻止我在对象中拥有自己的type字段。

这个问题与Remove "type" from JSON output jersey moxy有关,但不幸的是,它没有回答我的问题。

我试图将@XmlDiscriminatorNode包含在我的抽象类中,这似乎对结果json没有任何影响。

我还试图完全删除默认的moxy type元素但没有任何成功。

1 个答案:

答案 0 :(得分:3)

MOXy 2.6中类型属性的处理发生了变化。从MOXy 2.6开始,type属性默认以xsi前缀(或您定义的任何前缀)为前缀。这意味着从版本2.6开始,MOXy中不应该存在类型属性冲突。

详情可在https://wiki.eclipse.org/EclipseLink/DesignDocs/459464

找到

命名空间前缀需要指定为JAXBContext属性:

unmarshaller.setProperty(JAXBContextProperties.MEDIA_TYPE,MediaType.APPLICATION_JSON);  Map namespaces = new HashMap<>();  namespaces.put(javax.xml.XMLConstants.W3C_XML_SCHEMA_INSTANCE_NS_URI,“xsi”);  unmarshaller.setProperty(JAXBContextProperties.NAMESPACE_PREFIX_MAPPER,名称空间);