有类似的情况。cxf 不返回 js 端请求的数组数组,它额外添加了一些“item”标签。必须更改 applicationContext.xml,添加 jsonProvider 并在 jaxrs 中引用它。
<jaxrs:server id="someid" address="/">
<jaxrs:providers>
<ref bean="jsonProvider" />
</jaxrs:providers>
<bean id="jsonProvider" lass="com.fasterxml.jackson.jaxrs.json.JacksonJsonProvider">
<property name="mapper" ref="jsonMapper" /> </bean>
<bean id="jsonMapper" class="com.bofa.idp.disclosures.CustomJsonMapper" />
...
在 customJsonMapper 中扩展了 ObjectMpper,并且可以做调整
public CustomJsonMapper() {
super();
enable(DeserializationFeature.UNWRAP_ROOT_VALUE);
enable(SerializationFeature.WRAP_ROOT_VALUE);
enable(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY);
JaxbAnnotationModule jaxbModule=new JaxbAnnotationModule();
this.registerModule(jaxbModule);
this.setSerializationInclusion(JsonInclude.Include.NON_NULL);
this.setSerializationInclusion(JsonInclude.Include.NON_EMPTY);
}
可以调整单个服务以不使用 CustomeJsonMapper @JsonFormat 中定义的全局设置(无 = JsonFormat.Feature.WRITE_SINGLE_ELEM_ARRAYS_UNWRAPPED)