Как убрать вложенность у ArrayList при сериализации с Jackson

Имеются следующие объекты:

Message:

public record MyDto(long id, String type, RequestData requestData) {
}

RequestData - вложенный объект, который выглядит вот так:

public record RequestData(List<Field> fields) {
    public static RequestData of(int amount, String status) {
        return new AtcRequestData(List.of(
                Field.of(1, amount),
                Field.of(2, status),
        ));
    }
}

Класс Field:

@JsonInclude(JsonInclude.Include.NON_NULL)
public record Field(Object number, Object value, boolean flag) {
    public static Field of(Object number, Object value) {
        return new Field(number, value, true);
    }
}

При попытке сериализоать мой DTO стандартными средствами Jackson я получаю такой результат:

{
  "authId": 1,
  "type": "Update",
  "requestData": {
    "fields": [
      {
        "number": 1,
        "value": 15,
        "flag": true
      },
      {
        "number": 2,
        "value": 99,
        "flag": true
      }
    ]
  }
}

Структура, которую я хочу получить:

{
  "authId": 1,
  "type": "Update",
  "requestData": [
    {
      "number": 1,
      "value": 15,
      "flag": true
    },
    {
      "number": 2,
      "value": 99,
      "flag": true
    }
  ]
}

С помощью какой аннотации можно это сделать? Я пробовал использовать @JsonAnyGetter, но он работает только Map

Самый простой вариант - это использовать List вместо RequestData, но этот вариант мне не подходит по ряду причин


Ответы (0 шт):