С Джексоном, как сериализовать только некоторые свойства объекта ebean, когда он является частью другого объекта - PullRequest
0 голосов
/ 29 августа 2018

У меня есть API, который я могу вызвать, чтобы получить некоторые объекты Json. Допустим, у меня есть два вида объектов: A и B.

и A объекты имеют объект B среди своих переменных экземпляра. Когда я вызываю свой API для получения someB, я хочу получить следующий результат:

{
  id: 234,
  name: theBName,
  colour: theBColour,
  size: 123
}

но когда я вызываю свой API для получения someA, я хочу получить следующий результат:

{
  id: 456,
  type: someAType,
  b: {
    id: 234,
    name: theBName
  }
}

Как видите, мой B объект имеет только часть своих свойств во втором случае.

Я нашел, как сериализовать некоторые пропорции, а не другие, используя jsonViews. Я также знаю, как сериализовать объект как только его id при сериализации как часть другого объекта, добавив:

 @JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class, property = "id")
 @JsonIdentityReference(alwaysAsId = true)
 public B someB;

к моему A объекту.

Но я не могу понять, как сериализовать этот B объект как его id И другие свойства по моему выбору, когда и только когда он сериализован как часть A объекта.

Я ищу что-то вроде аннотации, подобной этой:

@serialiazeUsingOnlyProperties({"property1", "property2"})
public B someB;

положить в мой объект А.

1 Ответ

0 голосов
/ 29 августа 2018

Вы можете использовать @JsonIgnoreProperties. Аннотация обычно используется на уровне класса, но также применима и к полям. когда применяется к полю, он используется для игнорирования свойств внутри аннотированного поля:

@JsonIgnoreProperties({"colour", "size"})
public B someB;
...