Сериализовать карту как свойства родительского объекта - PullRequest
0 голосов
/ 05 августа 2020

У меня есть класс Parent, у которого есть некоторые свойства, включая одну карту .

public class Parent {

  private final int propA;
  private final String propB;
  private final Map<String, Object> map;

  publicParent(int propA, String propB, Map<String, Object> map) {
    this.propA = propA;
    this.propB = propB;
    this.map = map;
  }

  public int getPropA() {
    return propA;
  }

  public String getPropB() {
    return propB;
  }

  public Map<String, Object> getMap() {
    return map;
  }

}

При сериализации я, например, получу следующее:

{
  "propA": 5,
  "propB": "foo",
  "map": {
    "bar": "bong",
    "bing": "bang"
  }
}

Как я могу аннотировать класс, чтобы Джексон сериализовал его экземпляр, поместив записи карты как голые вместо этого к родительскому объекту?

{
  "propA": 5,
  "propB": "foo",
  "bar": "bong",
  "bing": "bang"
}

1 Ответ

0 голосов
/ 06 августа 2020

Я использовал аннотацию @JsonAnyGetter, чтобы добиться этого. Существует также соответствующая аннотация @JsonAnySetter, которая делает противоположное: заполняет нераспознанные свойства на карте.

  @JsonAnyGetter
  public Map<String, Object> getMap() {
    return map;
  }

Вот полезное руководство: https://www.baeldung.com/jackson-annotations

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...