我有以下 Jackson 课程:
public class InspectArrayFormulaArgs {
private final int expectedColumns;
@JsonCreator
public InspectArrayFormulaArgs(@JsonProperty(value = "expectedColumns", defaultValue = "-1") int expectedColumns) {
this.expectedColumns = expectedColumns;
}
}
我希望 Jackson 检查解析的 Json 是否包含字段expectedColumns
,并且:
- 如果该字段存在,则按原样处理
- 否则,使用
defaultValue
我声明的
但是Jackson解析出来的值还是0
这个pojo解析的时候的。
我认为这可能是由于 JDK 将 初始化为int
0 而 Jackson 不明白该字段不在 Json 中(尽管我认为他们直接解析 Json)。
因此,我尝试使用Integer
而不是int
作为构造函数的参数,但最终却变成了,NullPointerException
因为 Jackson 没有分配值-1
,因此 JDK 尝试将拆箱null
放入字段中int expectedColumns
。
关于我该如何做,您有什么想法吗?
笔记:
- 我尝试用注释来注释课程
@JsonInclude(JsonInclude.Include.NON_DEFAULT)
,但什么也没改变 - 我假设我可以将字段声明为 而不是
Integer
,int
但 Jackson 仍将其保留为null
(不分配-1
),我想避免在我这边进行检查,例如value != null ? value : -1
。如果没有解决方案,我当然会这样做,但我觉得 Jackson 无法理解我在问什么,这很奇怪,所以我想知道是不是我问错了