JSONView的示例示例,用于防止对默认值进行反序列化

时间:2012-09-25 04:16:19

标签: jaxb jersey jax-ws

我有一个简单的类来发出count和db游标信息。

public class Cursor
{
    public String cursor = null;
    public int count = -1;
}

我不希望发送计数和光标(序列化时),如果它们是null或-1,默认设置。

研究,我发现我应该使用一个视图,但我无法弄清楚如何使用它和视图实现来避免默认值。

此课程不需要反序列化。

感谢。

2 个答案:

答案 0 :(得分:0)

如果您使用Jackson,则可以提供

@JsonInclude(Include.NON_NULL) 
public class Cursor
{
     public String cursor = null;
     public Integer count = null;
}

当您给-1指定该字段的值时,我已将int更改为Integer
您也可以查看此post

答案 1 :(得分:0)

如果您使用的是2.x,则上述答案是最好的。使用JSONInclude批注。

但是,如果您使用较小的版本,我不相信有任何注释。我们必须自定义ObjectMapper。

public ObjectMapperProvider()
    {
    mapper = new ObjectMapper();

    mapper.configure(SerializationConfig.Feature.WRITE_NULL_PROPERTIES,
        false);
    mapper.configure(SerializationConfig.Feature.WRITE_NULL_MAP_VALUES,
        false);

    }

在Web.xml中

  <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
         <init-param>
                <param-name>com.sun.jersey.config.property.packages</param-name>
                <param-value>com.your.package; org.codehaus.jackson.jaxrs</param-value>
            </init-param>
         <load-on-startup>1</load-on-startup>
      </servlet>

com.your.package应包含新的自定义objectmapper类。