我正在尝试使用带有JaxB @XmlRootElement注释的CXF + Jackson配置REST服务的简单示例.我已经在堆栈溢出以及像这样的博客中经历了各种类似的问题,并提出了以下解决方案:
创建自定义对象映射器,如下所示:
public class CustomObjectMapper extends ObjectMapper{
public CustomObjectMapper() {
super();
super.configure(SerializationConfig.Feature.WRAP_ROOT_VALUE, true);
super.setSerializationInclusion(JsonSerialize.Inclusion.NON_NULL);
AnnotationIntrospector primary = new JaxbAnnotationIntrospector();
AnnotationIntrospector secondary = new JacksonAnnotationIntrospector();
AnnotationIntrospector pair = new AnnotationIntrospector.Pair(primary, secondary);
super.setAnnotationIntrospector(pair);
}
}
Run Code Online (Sandbox Code Playgroud)
在Spring配置中将此传递给Json提供的构造函数
<bean id="jacksonMapper" class="com.myorg.test.CustomObjectMapper" />
<jaxrs:providers>
<bean class="org.codehaus.jackson.jaxrs.JacksonJsonProvider">
<constructor-arg ref="jacksonMapper" />
</bean>
</jaxrs:providers>
Run Code Online (Sandbox Code Playgroud)
添加了一个JsonBean带有JAXB根元素注释的简单类
@XmlRootElement(name = "JsonBean")
public class JsonBean {
private String val1;
private String val2;
public String getVal1() {
return val1;
}
public void setVal1(String val1) {
this.val1 …Run Code Online (Sandbox Code Playgroud)