#java #json #jackson
#java #json #джексон
Вопрос:
У меня есть логическое поле как
private boolean isCustom;
наличие геттера и сеттеров в качестве
public boolean isCustom() {
return isCustom;
}
public void setCustom(boolean isCustom) {
this.isCustom = isCustom;
}
И в этом случае мой JSON будет {"custom":false}
но я хочу, чтобы JSON был {"isCustom":false}
поэтому я добавил @JsonProperty :
@JsonProperty
private boolean isCustom;
Но теперь есть еще одна проблема, поскольку мой JSON {"isCustom":false,"custom":false}
Вопрос: Как я могу устранить ненужное / повторяющееся поле в этом случае?
Примечание: я использую jackson-all-1.9.11.jar
Комментарии:
1. Вместо этого вы должны иметь возможность просто поместить
@JsonProperty(name="isCustom")
над логическим объявлением. Кроме того, вам следует переименовать поле вcustom
. Это может быть причиной двойной переменной.2. мне нужно, чтобы свойство было «isCustom»
Ответ №1:
Аннотация принимает параметр. И он должен быть помещен в поле, получатель и установщик, чтобы предотвратить дублирование
@JsonProperty("isCustom")
Комментарии:
1. это работает.. но какое-нибудь простое решение (у меня много логических значений)? и почему Джексон сгенерировал два поля?
2. Он создает поля на основе имен получателей и имен полей. Если они отличаются, вы получаете дубликаты. Единственный способ обойти это — аннотация. Если вы не хотите делать это вручную, создайте свои классы отсюда. jsonschema2pojo.org
3. даже если я добавлю @JsonProperty(«isCustom») только на getter, это работает.
Ответ №2:
Вы можете задать пользовательское имя в свойстве json следующим образом
@JsonProperty(name="isCustom")
private boolean isCustom;
Пожалуйста, обратитесь к документам для получения дополнительной информации
Ответ №3:
Вы можете попробовать это
@JsonProperty("isCustom")
Ответ №4:
Попробуйте использовать @JsonProperty(value = "isCustom")
аннотацию
Комментарии:
1. Пожалуйста, добавьте дополнительные пояснения к вашему ответу
Ответ №5:
Поместите эту аннотацию (@JsonProperty("isCustom"))
поверх getter и setter, она отобразит только одно поле и удалит дубликаты (для примитивного Boolean).
Ответ №6:
Есть два способа сделать это:
- Добавить
@JsonProperty("isCustom")
в свою собственность - переименуйте свойство в
custom
(это приведет к удалениюisCustom
из json)
Комментарии:
1. мне нужно, чтобы свойство было «isCustom»
2. Хорошо, в таком случае мы можем перейти к первому варианту.