我已经为此绞尽脑汁有一段时间了,但仍然没有快乐。我是 Spring 新手,确实需要一些帮助。
我正在尝试使用 Spring Boot 从数据库表返回代码列表。当我从浏览器中的 URL 调用 REST 控制器时...
示例网址:本地主机:8081/cis/utl/lookupchoice/O.s/
它返回这个:
[
{"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:无法从 START_ARRAY 令牌中反序列化 com.MyPakage.repository.LookupChoice 的实例
假设由于返回数组而不是单个对象而发生错误,我将代码更改为:
//
//Does not compile
Iterable<LookupChoice> lookupChoice = restTemplate.getForObject(REST_URI+"/utl/lookupchoice/U.r/",
Iterable<LookupChoice.class>);
但是,现在我在 Intellij 中遇到错误。它表明一个“预期表达“ 为了Iterable<LookupChoice.class>参数,我无法克服这一点。
感谢您的时间和帮助,
埃德
感谢您的回复。我选择了这个,现在一切似乎都有效。感谢您的帮助!
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);