Jackson 反序列化 convertValue 应该在空值上失败

Jackson deserialization convertValue should fail on nulls

嗨,

我有:

  1. 具有当前值的地图

    { "name": "Cedrik", "surname": "MySurname", }

  2. A public class myPojo

    @JsonProperty(required = true) private String name;
    @JsonProperty(required = true) private String surname;
    @JsonProperty(required = true) private String age;
    
    public String getName() {
        return name;
    }
    
    public void setName(String name) {
        this.name = name;
    }
    
    public String getSurname() {
        return surname;
    }
    
    public void setSurname(String surname) {
        this.surname = surname;
    }
    
    public String getAge() {
        return age;
    }
    
    public void setAge(String age) {
        this.age = age;
    }
    

如果地图中的一个字段不满足 POJO,我想要的是使从 Map 到 POJO 的转换失败(抛出异常)。

它似乎不适用于使用 DeserializationFeature 的任何类型的配置。我试图调整所有与空字段有关的配置

示例:

objectMapper.configure(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT, false)
objectMapper.configure(DeserializationFeature.FAIL_ON_MISSING_CREATOR_PROPERTIES, true);

这应该会抛出异常,但它不会:

MyPojo myPojo = MAPPER.convertValue(action.getParams(), MyPojo.class);

如果映射中缺少 age 字段并且 POJO 需要,我如何让它在转换期间抛出异常?

Jackson 不支持验证(明确超出范围),因此您需要在反序列化后单独进行验证,例如使用 Bean Validation 实现(如 Hibernate Validator)。