如何解决Java Spring接收多头打印列表MismatchedInputException
我使用以下PostMapping接收3个参数:
@PostMapping(value = "/createJobs",consumes="application/json",produces="application/json")
public @ResponseBody ResponseEntity<HttpStatus> createJobs(
@RequestBody ArrayList<Long> sizes,@RequestBody Long accounts,@RequestBody Long productId
) {
System.out.println(sizes + " " + accounts + " " + productId);
try {
jobService.createJobs(productId,sizes,accounts);
return ResponseEntity.status(HttpStatus.OK).build();
}
catch (final Exception e) {
LOGGER.error(e.getMessage());
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build();
}
}
我使用Angular发送发帖请求。我发送的数据如下:
{
"productId":715,"sizes":[3,5],"accounts":3
}
但是发送后请求后,我收到以下错误:
.w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot deserialize instance of `java.util.ArrayList<java.lang.Long>` out of START_OBJECT token; nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of `java.util.ArrayList<java.lang.Long>` out of START_OBJECT token
at [Source: (PushbackInputStream); line: 1,column: 1]]
解决方法
虽然可以方便地将每个请求关键字放在带有@RequestBody
的方法参数上,但是建议为每个请求模型创建一个通用类。
例如我的控制器:
ResponseEntity<TransactionLog> checkDiscount(HttpServletRequest request,@RequestBody RequestCheckDiscount requestBody) {
// Your code here
}
我的请求模型:
public class RequestCheckDiscount {
private String username;
private int amount;
private long time;
// Standard getters and setters.
}
,
POST请求正文中的密钥应为 productId ,而不是 product 。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。