我已经有一段时间不高兴了。我是Spring的新手,真的需要一些帮助。
我试图使用SpringBoot从DB表返回代码列表。当我从浏览器中的URL调用我的REST控制器时。。。
示例URL:localhost: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。杰克逊。数据绑定。JsonMappingException:无法反序列化com实例。我的包装。存储库。开始数组令牌的查找选项
假设由于返回数组而不是单个对象而发生错误,我将代码更改为:
//
//Does not compile
Iterable<LookupChoice> lookupChoice = restTemplate.getForObject(REST_URI+"/utl/lookupchoice/U.r/",
Iterable<LookupChoice.class>);
但是,现在我在Intellij中得到了一个错误。这表示Iterable需要一个“表达式”
谢谢你的时间和帮助艾德
谢谢你的回复。我选择了这个,现在一切似乎都起作用了。谢谢你的帮助!
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);
它不编译的原因是因为在Java中不可能传递一类泛型类型参数,因为它们在运行时不存在。
这里有两个选项,要么使用数组(LookupChoice[]
),要么将其转换为列表
restTemplate.getForObject(url, LookupChoice[]);
或者您可以使用
参数化类型引用
:
restTemplate.exchange(url, HttpMethod.GET, null, new ParameterizedTypeReference<List<LookupChoice>>() {}).getBody()
不过,它是一个接口,所以要么对它进行子类化,要么使用匿名类,就像我在上面的代码示例中所做的那样。
另外,
ParameterizedTypeReference
仅在exchange()
方法上有效(如果我没有弄错的话),因此您将获得一个ResponseEntity
而不是原始对象,因此您必须使用getBody()
方法。
我正在与jackson一起阅读Mailchimp的Mandrill API返回的JSON响应。对于API响应来说,该响应有点非常规,因为它在方括号内包含把手——一个对象列表。围绕此错误的其他堆栈溢出讨论涉及不在列表中的API响应。 我得到这个错误。。。 定义此响应对象的正确方法是什么? 我尝试用以下类型定义响应。都没有奏效。 @milchalk...如何准确地使用您的对象映射器建议与我目前调用AP
我正在尝试发布一个自定义对象的。请求体中的JSON如下所示: 处理请求的服务器端代码: 实体: 但会引发异常:
例外情况: 套接字处理程序 我相信当JSON被解析为WorkstationRequest对象时会出现异常,原因是下面的项。这是套接字处理程序: 我不知道如何开始调试它。堆栈跟踪从未触及我的应用程序。我正在使用部署我的.jar,并使用执行它
在执行从serviceA到serviceB的请求时, serviceA中的测试请求是
下面是POJO类: 主要功能如下: