如果其中一个必填字段为空,则停止(pojo)序列化

时间:2017-07-20 06:44:44

标签: java json serialization jackson

考虑以下POJO:

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonInclude.Include;

@JsonInclude(content=Include.NON_NULL)
public class User {
    @JsonProperty(required=true)
    private String username;
    private String dob;
    private String email;
    //        ... (getters and setters)

}

考虑以下pojo的以下示例JSON:

{
    "username": "foo",
    "email": "foo@bar.com",
    "dob": "12/21/1994"
}

如果我将字段指定为null,则会在序列化时忽略该字段。

回答我的问题,是否有办法在必填字段为null时停止序列化(抛出异常),因为目前杰克逊认为null为因此,这不违反@JsonProperty(required=true)

指定的合同

我需要将username字段始终存在于我的json中。

我尝试将@NotNulljavax.validation:validation-api一起使用,但这似乎不起作用。

这是一个 spring-boot 1.5.2 应用程序。

P.S。
请随时建议其他可用的API或编辑问题以使其更好。

1 个答案:

答案 0 :(得分:-1)

你可以使用一些链接来帮助你。

mapper.setSerializationInclusion(Include.NON_NULL);

或:

  @JsonInclude(Include.NON_NULL)
    class User
    {
    private String username;
    private String dob;
    private String email;
    ......
    .......
    }