Я пытаюсь упорядочить список: List<Pojo>
объектов с помощью Spring Rest Template.
Я могу передавать простые Pojo
объекты, но я не могу найти документацию, в которой описано, как отправить List<Pojo>
объекты.
Spring использует Джексона JSON для реализации HttpMessageConverter
. Документация Джексона покрывает это:
В дополнение к привязке к POJO и
«простые» типы, есть один
дополнительный вариант: привязка к
универсальные (типизированные) контейнеры. Этот случай
требует специальной обработки из-за
так называемое стирание типа (используется Java
реализовать дженерики в несколько
обратно совместимый путь), который
мешает вам использовать что-то вроде
Collection<String>.class
(что делает
не компилируется).
Так что, если вы хотите связать данные в
Map<String,User>
вам нужно будет использовать:
Map<String,User> result = mapper.readValue(src, new TypeReference<Map<String,User>>() {});
, где TypeReference
требуется только для
передать определение общего типа (через
любой внутренний класс в этом случае):
важная часть
<Map<String,User>>
который определяет тип
привязать к.
Можно ли это сделать в шаблоне Spring? Я взглянул на код, и это меня не устраивает, но, может быть, я просто не знаю какой-то хитрости.
Решение
Окончательное решение, благодаря полезным ответам ниже, заключалось в том, чтобы не отправлять список, а отправлять один объект, который просто расширяет список, например: class PojoList extends ArrayList<Pojo>
. Spring может успешно упорядочить этот объект, и он выполняет то же самое, что и отправка List<Pojo>
, хотя это решение будет немного менее чистым. Я также опубликовал весной JIRA, чтобы они могли устранить этот недостаток в интерфейсе HttpMessageConverter
.