Как я могу распознать необъявленные примитивы с помощью Джексона?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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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