Как я могу распознать необъявленные примитивы с помощью Джексона?JAVA

Программисты JAVA общаются здесь
Anonymous
Как я могу распознать необъявленные примитивы с помощью Джексона?

Сообщение Anonymous »

У меня есть следующий класс Джексона:

Код: Выделить всё

public class InspectArrayFormulaArgs {

private final int expectedColumns;

@JsonCreator
public InspectArrayFormulaArgs(@JsonProperty(value = "expectedColumns", defaultValue = "-1") int expectedColumns) {
this.expectedColumns = expectedColumns;
}

}
Я ожидаю, что Джексон проверит, содержит ли проанализированный Json поле ожидаемые столбцы, и:
  • Если поле есть, примите его как есть.
  • Иначе используйте значение по умолчанию, которое я объявил
Однако значение, проанализированное Джексоном, по-прежнему равно 0 при анализе этого pojo.
Я подумал, что это может быть связано с тем, что JDK инициализирует int как 0, и Джексон не понимает, что этого поля нет в Json (хотя я думал, что они анализируют Json напрямую).
Поэтому я попытался использовать Integer вместо int в качестве параметра конструктора, но это приводит к исключению NullPointerException, поскольку Джексон не присваивает значение -1, и поэтому JDK пытается распаковка значения null в поле int ожидаемые столбцы.
Есть идеи, как мне это сделать?
Примечания:

[*]Я пробовал аннотировать класс с помощью @JsonInclude(JsonInclude.Include.NON_DEFAULT), но это ничего не изменило.
[*]Я предполагаю, что могу объявить поле целым вместо целого, но Джексон все равно оставит его нулевым (не присваивает -1), и я хотел избежать проверок на своей стороне, таких как value != null ? значение: -1. Конечно, я сделаю это, если нет решения, но мне кажется странным, что Джексон не способен понять, о чем я спрашиваю, поэтому мне интересно, не неправильно ли я спрашиваю


Подробнее здесь: https://stackoverflow.com/questions/790 ... th-jackson

Вернуться в «JAVA»