gpt4 book ai didi

java - Jackson - 拒绝空值,但允许缺失值

转载 作者:行者123 更新时间:2023-11-30 08:03:56 29 4
gpt4 key购买 nike

我正在使用 Jackson 将 JSON 反序列化为模型。假设我有以下模型:

class Model {
private String fieldA;
private Optional<String> fieldB;
}

此处,fieldA 不可为 null。在 JSON 中,它可以不存在,也可以填充:

{

}

{
"fieldA": "value"
}

在 Java 中,未填充的情况会导致成员 fieldA 的值为空。

我的问题:有没有办法拒绝 fieldA 的空值?对于以下输入 JSON,Jackson 应该抛出异常:

{
"fieldA": null
}

请注意,我只希望 fieldA 具有这种行为,而不是 fieldB,因为 fieldB 可以为空(因此它被包裹在模型中的可选)。

我还可以将 fieldA 包装在 Optional 中,并在其中添加一些 bean 验证,但我不想更改模型。

最佳答案

否 Jackson 不提供验证 API。您可以通过在类中包含 @JsonInclude(Include.NON_NULL) 来忽略 null 值,或者使用 Bean Validation API如果条件不满足,它将验证并抛出错误。

更新:

对于您的评论答案,如果您只是想跳过 fieldA 值(如果为空)并让其他值允许它们,而不是在 setter 方法中,您可以手动检查。

就您而言:

public void setFieldA(String fieldA) {

if (fieldA != null) {
this.fieldA = fieldA;
}
}

关于java - Jackson - 拒绝空值,但允许缺失值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31450167/

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