【问题标题】:Avoid object with null fields using Jackson使用 Jackson 避免具有空字段的对象
【发布时间】:2017-08-27 16:45:03
【问题描述】:

如果我尝试反序列化缺少对象类中的字段的 JSON 字符串,则在创建对象时该字段设置为 null。发生这种情况时,我需要 Jackson 抛出异常,因此我不必在每个对象中实现 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() {}
}

考虑到我的配置,这可能吗?

【问题讨论】:

    标签: java json jackson


    【解决方案1】:

    您可以尝试在LogInUser 类中使用JsonCreator,如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() {}
    
    }
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-18
      • 2017-01-03
      • 2015-12-04
      • 1970-01-01
      • 1970-01-01
      • 2017-07-28
      相关资源
      最近更新 更多