【问题标题】:Jackson deserialization convertValue should fail on nullsJackson 反序列化 convertValue 应该在 null 上失败
【发布时间】:2017-03-10 23:45:42
【问题描述】:

喂,

我有什么:

  1. 具有当前值的地图

    { “名称”:“塞德里克”, “姓氏”:“我的姓氏”, }

  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;
    }
    

如果地图中的一个字段不满足 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 需要,我如何在转换期间引发异常?

【问题讨论】:

    标签: java dictionary serialization jackson pojo


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2014-02-21
      • 1970-01-01
      • 1970-01-01
      • 2018-12-26
      • 2014-07-16
      • 1970-01-01
      • 1970-01-01
      • 2019-09-28
      • 2011-06-14
      相关资源
      最近更新 更多