Я уже немного отбивал себе голову против этого и до сих пор не испытываю радости. Я новичок в Spring и действительно могу помочь.Spring MVC: Невозможно десериализовать экземпляр из токена START_ARRAY
Я пытаюсь использовать Spring Boot для возврата списка кодов из таблицы DB. Когда я называю мой контроллер REST из URL в браузере ...
Пример URL: локальный: 8081/цис/УБТ/lookupchoice/Os/
возвращает это:
[
{"lookupId":10,"choiceGroup":"O.s","choiceCode":null,"displayLabel":"Pending","hidden":false,"displayOrder":1},
{"lookupId":11,"choiceGroup":"O.s","choiceCode":null,"displayLabel":"Active","hidden":false,"displayOrder":2},
{"lookupId":12,"choiceGroup":"O.s","choiceCode":null,"displayLabel":"Archived","hidden":false,"displayOrder":3},
{"lookupId":13,"choiceGroup":"O.s","choiceCode":null,"displayLabel":"Placeholder","hidden":false,"displayOrder":4}
]
Но при попытке запустить это с клиентского контроллера появляется сообщение об ошибке. Вызов выглядит следующим образом:
//
//Compiles but does not work
LookupChoice lookupChoice = restTemplate.getForObject(REST_URI+"/utl/lookupchoice/O.s/",
LookupChoice.class);
ошибка:вложенного исключение com.fasterxml.jackson.databind.JsonMappingException: Невозможно десериализация экземпляра com.MyPakage.repository.LookupChoice из START_ARRAY маркеров
Предполагая, что ошибка происходит потому, что массив возвращается вместо одного объекта, я изменил код для этого:
//
//Does not compile
Iterable<LookupChoice> lookupChoice = restTemplate.getForObject(REST_URI+"/utl/lookupchoice/U.r/",
Iterable<LookupChoice.class>);
Но теперь я Г.Е. t ошибка в Intellij. Это указывает на что "Expression ожидается" для Iterable < LookupChoice.class> парам, и я не могу пройти мимо этого.
Спасибо за ваше время и помощь, Ed
Спасибо за ваш ответ. Я выбрал это, и теперь все работает. Спасибо за вашу помощь!
RestTemplate restTemplate = new RestTemplate();
ResponseEntity<Object[]> responseEntity;
Object[] lookupChoice;
responseEntity = restTemplate.getForEntity(REST_SERVICE_URI+"/utl/lookupchoice/O.s/" , Object[].class);
lookupChoice = responseEntity.getBody();
model.addAttribute("Status", lookupChoice);
О вышеупомянутом, есть ли какие-либо улучшения, которые сделают это более элегантным и/или улучшат производительность и т. Д.? – eLowe