2017-04-02 30 views
1

如果我试图反序列化缺少对象类中的字段的JSON字符串,那么创建对象时该字段设置为null。我需要杰克逊在发生这种情况时抛出异常,因此我不必在每个对象中实施assertNotNullFields()方法;即JSON字符串输入必须定义该类中的所有字段或引发JsonProcessingException使用Jackson避免使用空字段的对象

对象映射配置:

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

JSON对象:

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

给我的配置是这可能吗?

回答

0

您可以尝试在LogInUser类中使用JsonCreator,如here所述。当引入您在quesion带来的代码,它会是这个样子:

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,则应该抛出异常。