杰克逊反序列化convertValue应该在null上失败

时间:2016-10-28 06:11:25

标签: java dictionary serialization jackson pojo

Hy,

我有什么:

  1. 包含当前值的地图

    {   “名字”:“塞德里克”,   “姓”:“MySurname”, }

  2. 公共类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;
    }
    
  3. 如果地图中的一个字段未满足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);
    

    如果地图中缺少年龄字段且POJO需要,我是如何让它在转换期间抛出异常的?

1 个答案:

答案 0 :(得分:2)

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