从JSON moxy输出重命名"type"

Ste*_*vra 7 java json marshalling eclipselink moxy

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

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

这个问题涉及从JSON输出泽西moxy删除"类型"但不幸的是,它没有回答我的问题.

我试图@XmlDiscriminatorNode在我的抽象类中包含一下,结果json似乎没有任何区别.

我也尝试完全删除默认的moxy type元素,但没有任何成功.

小智 3

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

详细信息请参见https://wiki.eclipse.org/EclipseLink/DesignDocs/459464

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

unmarshaller.setProperty(JAXBContextProperties.MEDIA_TYPE, MediaType.APPLICATION_JSON); 映射命名空间 = new HashMap<>(); 命名空间.put(javax.xml.XMLConstants.W3C_XML_SCHEMA_INSTANCE_NS_URI, "xsi"); unmarshaller.setProperty(JAXBContextProperties.NAMESPACE_PREFIX_MAPPER, 命名空间);