Десериализация Джексона - как только десериализовать аннотированные свойстваJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Десериализация Джексона - как только десериализовать аннотированные свойства

Сообщение Anonymous »

У меня есть приложение, в котором нам нужно отправлять данные туда -сюда через JSON, а затем отображать их с различными объектами в нашем приложении. Я смог настроить его так, что Джексон будет только serialize свойства с аннотациями, но я не могу сделать то же самое для десеризации. Находящихся классов имеют дополнительные поля, которых нет в JSON. В настоящее время я использую Jackson 2.54 (да, я знаю, это старое), но я могу перейти на последнюю версию, если получу одобрение от своих начальников. < /P>

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

public class Person extends BaseClass {
@JsonProperty("id")
private String id;

@JsonProperty("Email")
private Email email;

@JsonProperty("Name")
private PersonNm name;

private EndDt endDt;

// Getters and setters for all of the above
}
< /code>
Как вы можете видеть, у меня есть три свойства, отмеченные JsonProperty (а сети и геттеры отмечены как Jsonsetter и Jsongetter соответственно), но у меня есть дополнительное свойство, «Enddt». Это свойство никогда не появится в JSON, так как оно будет использовано позже. Тем не менее, он все еще имеет два конструктора: < /p>
public void setEndDt(Date val) {
if (endDt == null)
endDt = new EndDt();
endDt.setValue(val);
}

public void setEndDt(EndDt val) {
this.endDt = endDt;
}
< /code>
Следующий JSON отправляется в: < /p>
"Person": {
"id": "1",
"Email": {
"value": "[email protected]"
},
"Name": {
"value": "Bob Smith"
}
}
< /code>
Опять же, Enddt нет вообще. Но я все еще получаю исключение com.fasterxml.jackson.databind.exc.invaliddefinitionexception: конфликтующие определения сеттера для собственности "enddt": com.program.company.person#setenddt (com.program.company.endt) com.program.company.person#setenddt (java.util.date) 
.
Я знаю, что я мог бы просто использовать jsonignore, но во многих классах есть несколько свойств, и было бы гораздо проще, чтобы Deserializer проигнорировал все, что не отмечает как «JSonProperty». У меня настроен мой объект, настроенный как таковой: < /p>

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

ObjectMapper mapper = new ObjectMapper();
mapper.enable(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY);
mapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
mapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
mapper.disable(DeserializationFeature.FAIL_ON_INVALID_SUBTYPE);
mapper.disable(MapperFeature.AUTO_DETECT_SETTERS,
MapperFeature.AUTO_DETECT_FIELDS,
MapperFeature.AUTO_DETECT_CREATORS,
MapperFeature.AUTO_DETECT_GETTERS,
MapperFeature.AUTO_DETECT_IS_GETTERS);
Итак, мой вопрос, несмотря на существование Jsonignore, есть ли что-то более удобное, свойство, которое я мог бы установить, чтобы просто игнорировать все не аннотируемые поля?

Подробнее здесь: https://stackoverflow.com/questions/796 ... properties
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Десериализация Джексона - как только десериализовать аннотированные свойства
    Anonymous » » в форуме JAVA
    0 Ответы
    1 Просмотры
    Последнее сообщение Anonymous
  • Десериализация Джексона с анонимными классами
    Anonymous » » в форуме JAVA
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous
  • Десериализация Джексона в обход конечных полей
    Anonymous » » в форуме JAVA
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous
  • Десериализация Джексона с общими аргументами
    Гость » » в форуме JAVA
    0 Ответы
    19 Просмотры
    Последнее сообщение Гость
  • Десериализация Джексона не удалась в тесте Mockmvc, но работает нормально при запуске приложения.
    Anonymous » » в форуме JAVA
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous

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