我正在努力解决Moxy如何处理对象的继承问题。
特别是,我需要重命名Moxy在子类型中添加的默认type
元素,因为它阻止我在对象中拥有自己的type
字段。
这个问题与Remove "type" from JSON output jersey moxy有关,但不幸的是,它没有回答我的问题。
我试图将@XmlDiscriminatorNode
包含在我的抽象类中,这似乎对结果json没有任何影响。
我还试图完全删除默认的moxy type
元素但没有任何成功。
答案 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,名称空间);