使用Jackson避免使用null字段的对象

时间:2017-04-02 22:12:05

标签: java json jackson

如果我尝试反序列化从对象类中缺少字段的JSON字符串,则在创建对象时该字段设置为null。我需要杰克逊在发生这种情况时抛出异常,所以我不必在每个对象中实现assertNotNullFields()方法;即JSON字符串输入必须已定义类中的所有字段或抛出JsonProcessingException

对象映射器配置:

objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.NONE);
objectMapper.setVisibility(PropertyAccessor.FIELD, JsonAutoDetect.Visibility.ANY);

JSON对象:

public class LogInUser {
    public String identifier, password;
    public LogInUser() {}
}

根据我的配置,这可能吗?

1 个答案:

答案 0 :(得分:1)

您可以尝试在JsonCreator课程中使用LogInUser,如上所述here。当你引入你在问题中提出的代码时,它看起来像这样:

public class LogInUser {

    @JsonCreator
    public LogInUser(@JsonProperty(value = "identifier", required = true) String identifier, @JsonProperty(value = "password", required = true) String password) {
    this.identifier = identifier;
    this.password = password;
    }

    public String identifier, password;
    public LogInUser() {}

}

当一个或多个值为null时,它应抛出异常。