Jackson 反序列化 convertValue 应该在空值上失败
Jackson deserialization convertValue should fail on nulls
嗨,
我有:
具有当前值的地图
{
"name": "Cedrik",
"surname": "MySurname",
}
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)。
嗨,
我有:
具有当前值的地图
{ "name": "Cedrik", "surname": "MySurname", }
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)。