[英]How to use fasterxml Jackson JSON serialization in Spring 4
[英]How to use JAXBElement in jackson xml serialization?
我已经使用xsd2java
从xsd自动生成了Java类。 我无法修改xsd或Java类。
问题:在一个类中,生成List<JAXBElement>
的元素。 如果现在添加任何JAXBElement
,则jackson
xml编组器将不会显示适当的xml元素,但是会序列化JAXBElement
的属性。 类似于declaredType
, scope
等。请参见下文。
@XmlRootElement(name = "bookingRequest")
public class AutogeneratedReq {
private List<JAXBElement<?>> someElements;
}
用法:
AutogeneratedReq req = new AutogeneratedReq();
JAXBElement<?> person = new ObjectFactory().createPerson();
req.getSomeElements().add(person);
结果:
<someElements>
<JAXBElement>
<name>person</name>
<declaredType>net.some.company.Person</declaredType>
<scope>net.some.company</scope><value someattribues="test"/>
<nil>false</nil>
<globalScope>false</globalScope>
<typeSubstituted>false</typeSubstituted>
</JAXBElement>
</someElements>
问题:如何告诉jackson
或spring-mvc
生成正确的xml,而不显式地显示JAXBElement
序列化?
我不知道您当前使用哪个xsd2java实用程序,但是您可以尝试使用以下maven插件从XSD文件生成Java类。
https://github.com/highsource/jaxb2-basics/wiki/Using-JAXB2-Basics-Plugins
然后,您可以使用以下扩展名来创建正确类型的POJO。
https://github.com/highsource/jaxb2-basics/wiki/JAXB2-Simplify-Plugin
但是,即使您可以创建类型化的POJO属性,从该POJO生成的XML文件对于原始XSD文件也可能不是100%有效。
<jaxb:bindings multiple="true" node="//xs:element[@name='someElement']//xs:complexType//xs:choice//xs:element">
<simplify:as-element-property/>
</jaxb:bindings>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.