为什么cxf json没有marshaing字段为空值

时间:2013-09-02 01:34:18

标签: json cxf

cxf 2.2.7版。
json字符串仅包含非null值,但不包含空值属性,例如:

class Bean {String field1;String field2}

Bean bean = new Bean();
bean.setField1("value1");
在编组之后,结果json是:

{"field1":"value1"}

我希望json成为:

{"field1":"value1","field2":""}

谢谢!

1 个答案:

答案 0 :(得分:1)

据我所知,无法在Jettison中映射空值(默认的JSON提供程序)。但是,如果您切换到Jackson,那么您可以获得所需内容。杰克逊将空值映射到 null

为了实现这一点,添加以下maven依赖:

<dependency>
   <groupId>org.codehaus.jackson</groupId>
   <artifactId>jackson-jaxrs</artifactId>
   <version>1.9.0</version>
</dependency>

用org.codehaus.jackson.jaxrs.JacksonJaxbJsonProvider替换org.apache.cxf.jaxrs.provider.json.JSONProvider。

结果是:

{"field1":"value1","field2":null}