programmerjava
@programmerjava

Jackson сериализация POJO. Как вытащить единственное свойство из инкапсулируемого объекта?

Есть объект класса A. Его нужно превратить в json
class A {
private String id;
  private String descr;
  private B b;
}

И есть класс B. Он может быть очень большим.
class B {
  private String id;
  ...
}

Интересно, можно ли превратить объект класса A в такой json - объект
{
  "id": "a_id",
  "b": {"id":"b_id"}
}

Если ли аннотация которая задает поля, которые нужно выдернуть из объекта класса B не затрагивая остальные @JsonXXXProperty({"id"}) ??? Очень бы помогло. При этом (если есть такая) я бы мог отдельно объект класса B преобразовывать в json так как помечено аннотациями в нем.
Я jackson только начинаю изучать. Буду очень благодарен за подсказку.

upd
я хотел лишь вот что сделать используя аннотации:
A a = ...
B b = ...
a.setB(b); b.setA(a);
ObjectMapper mapper = ...
String value = mapper.writeValueAsString(a);


после этого value должно было хранить значение json:
{
"id": "a_id",
"b": {"id":"b_id"}
}


но пока только вот такой код:
A a = ...
B b = ...
a.setB(b); b.setA(a);
ObjectMapper mapper = ...
ObjectNode node = (ObjectNode )mapper.convertValue(a, JsonNode.class);
node.remove(propertyToDelete);
String value = node.toString();


вот эта часть node.remove(propertyToDelete);очень много повторяться может. зависит от кол-ва полей для скрытия в json... не очень удобно :)
  • Вопрос задан
  • 1044 просмотра
Пригласить эксперта
Ответы на вопрос 2
timych
@timych
Я не понял вы хотите вытащить поля класса B не обращаясь к самому классу? А вас не устраивает:
A a  =  new A();
B b  =  new B();
a.setB(b);
// инициализирум поля и  преобразовываем в  JSON
...
// после парсинга из  JSON
String bId = a.getB().getId();


?

Или я не допонял вопрос?
Ответ написан
zolt85
@zolt85
Программист
А чем Вам помешали остальные поля? Я так понял на клиенте вы все равно обратитесь только к b.id. Остальное просто игнорируйте.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы