Я пытаюсь упорядочить список: List<Pojo>
объектов через шаблон Spring Rest.
Я могу передать простые объекты Pojo
, но я не могу найти документацию, описывающую, как отправить объекты List<Pojo>
.
Spring использует Jackson JSON для реализации HttpMessageConverter
. Документация Jackson описывает это:
В дополнение к привязке к POJO и "простых" типов, есть один дополнительный вариант: привязка к общие (типизированные) контейнеры. Это дело требует специальной обработки из-за так называемый тип Erasure (используемый 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 в Spring, чтобы устранить этот недостаток в интерфейсе HttpMessageConverter
.