我将JSON反序列化为杰克逊的模型。说我有以下型号:
class Model {
private String fieldA;
private Optional<String> fieldB;
}
此处,fieldA
不可为空。在JSON中,它可以不存在或填写:
{
}
或
{
"fieldA": "value"
}
在Java中,未填充的in-case会导致成员fieldA
的空值。
我的问题:有没有办法拒绝fieldA
的空值?对于以下输入JSON,杰克逊应该抛出异常:
{
"fieldA": null
}
请注意,我只希望fieldA
而不是fieldB
的行为,因为fieldB
可以为空(因此它在模型中包裹Optional
)
我也可以在fieldA
中包装Optional
并在那里添加一些bean验证,但我宁愿不更改模型。
答案 0 :(得分:1)
No Jackson不提供验证API。您可以通过在类中包含@JsonInclude(Include.NON_NULL)
来忽略空值,或者使用Bean Validation API,如果不满足条件,它将验证并抛出错误。
<强>更新强>
对于你的评论答案,无论如何你只想跳过fieldA值,如果它是null并让其他人允许它们而不是setter方法你可以手动检查。
在你的情况下:
public void setFieldA(String fieldA) {
if (fieldA != null) {
this.fieldA = fieldA;
}
}