gpt4 book ai didi

jackson - 配置 Jackson 在缺少字段时抛出异常

转载 作者:行者123 更新时间:2023-12-03 12:11:09 38 4
gpt4 key购买 nike

我有一个这样的类(class):

public class Person {
private String name;
public String getName(){
return name;
}
}

我正在使用这样配置的 ObjectMapper:
ObjectMapper mapper = new ObjectMapper();
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);

我有一个字符串 str包含此 { "address" : "something" } .请注意,json 中没有“名称”字段。如果我做这样的事情:
mapper.readValue(str, Person.class);

然后我实际上取回了一个名称设置为空的 Person 对象。有没有办法将映射器配置为抛出异常,或者返回空引用而不是 Person?我希望 Jackson 将缺少字段视为失败,并且不想对结果对象的字段进行显式空检查。

最佳答案

不幸的是, jackson 目前不支持这一点。

解决方案可能是在构造函数中添加验证。理想情况下,如果您不想将这些值序列化为 null's ,这确实意味着您根本不应该将它们作为 null(以其他方式构造)。例如,

public class Person {
private String name;
public Person() {
checkNotNull(name);
}
}

但是,这可能不适用于所有情况,特别是如果您正在使用对象而不是通过序列化/反序列化。

虽然他们有 required @JsonProperty 中的属性注释,它在反序列化过程中根本不受支持,并且仅用于装饰 JSON 模式。看到这个 topic

关于jackson - 配置 Jackson 在缺少字段时抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28355891/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com