从apache cxf REST响应中删除空值字段

Ziv*_*evy 3 apache rest cxf jax-rs jackson

我在我的REST服务web容器中使用apache-cxf 2.7.11+ jackson (codehaus) 1.9.13+ spring 3.5.我想知道什么是null从REST响应中删除值字段的最佳方法.

例如:
我的回复现在是这样的:

{
 "name": "MyName",
 "age": 10,
 "address": null
}
Run Code Online (Sandbox Code Playgroud)

我希望我的回复是这样的(该address字段已被删除):

{
 "name": "MyName",
 "age": 10
}
Run Code Online (Sandbox Code Playgroud)

我在apache-cxf这里读到了拦截器和过滤器:

并想知道什么是最佳做法?是否有任何可配置的设置,我可以更改而不是实现我自己的文件管理器或拦截器类?

我正在使用beans.xml文件进行配置,因此我正在研究如何在这里配置它,我的bean是:

<bean id="jaxrsRestJacksonObjectMapper" class="org.codehaus.jackson.map.ObjectMapper"/>

<bean id="jsonProvider" class="org.codehaus.jackson.jaxrs.JacksonJsonProvider">
    <property name="mapper" ref="jaxrsRestJacksonObjectMapper"/>
</bean>


<jaxrs:server id="restContainer" address="/">
        <jaxrs:serviceBeans>

        </jaxrs:serviceBeans>
        <jaxrs:providers>
            <ref bean="jsonProvider"/>
        </jaxrs:providers>

</jaxrs:server>
Run Code Online (Sandbox Code Playgroud)

干杯!

Ziv*_*evy 5

找到了!
这是我正在寻找的答案:

看到更新的beans.xml文件:

<bean id="jacksonObjectMapper" class="org.codehaus.jackson.map.ObjectMapper">
    <property name="serializationInclusion" value="NON_NULL"/>
</bean>

<bean id="jsonProvider" class="org.codehaus.jackson.jaxrs.JacksonJsonProvider">
    <property name="mapper" ref="jacksonObjectMapper"/>
</bean>
Run Code Online (Sandbox Code Playgroud)