Как убрать вложенность у 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, но этот вариант мне не подходит по ряду причин