Мой веб-сервис (WS) получает запрос HTTP POST, и JacksonJsonProvider десериализует входящий объект тела в строку JSON. DTO прост:
public class SettingDTO {
private String key;
private String value;
...
}
Подпись WS выглядит следующим образом:
@Post
Response saveList(List<SettingDTO> list);
WS ожидает массив на входе. Пример:
{
"settings": [
{
"key": "key1",
"value": "val1"
},
{
"key": "key2",
"value": "val2"
}
]
}
Это приводит к исключению. Джексон не знает, как обращаться с лидирующей меткой «настройки». Если я попробую это без метки, просто с простым массивом, он будет работать хорошо. Но установлено требование использовать его таким, какой он есть.
Одно из известных мне решений - использовать объект-обертку, еще один DTO. Интересно, можно ли это решить без дополнительной обертки? Может быть, аннотацию сработает?
После десериализации я хочу в итоге заполнить List<Setting> settings ...