java spring接收长打印不匹配的列表InputException

cuxqih21  于 2021-07-06  发布在  Java
关注(0)|答案(2)|浏览(311)

我使用以下postmapping来接收3个参数:

  1. @PostMapping(value = "/createJobs",
  2. consumes="application/json",
  3. produces="application/json")
  4. public @ResponseBody ResponseEntity<HttpStatus> createJobs(
  5. @RequestBody ArrayList<Long> sizes,
  6. @RequestBody Long accounts,
  7. @RequestBody Long productId
  8. ) {
  9. System.out.println(sizes + " " + accounts + " " + productId);
  10. try {
  11. jobService.createJobs(productId, sizes, accounts);
  12. return ResponseEntity.status(HttpStatus.OK).build();
  13. }
  14. catch (final Exception e) {
  15. LOGGER.error(e.getMessage());
  16. return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build();
  17. }
  18. }

我用angular发送post请求。我发送的数据如下所示:

  1. {
  2. "productId":715,
  3. "sizes":[3,5],
  4. "accounts":3
  5. }

但在发送post请求后,我收到以下错误:

  1. .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
  2. at [Source: (PushbackInputStream); line: 1, column: 1]]
rjzwgtxy

rjzwgtxy1#

post请求主体中的键应该是productid,而不是product。

piok6c0g

piok6c0g2#

而将每个请求键放在带有 @RequestBody ,建议为每个请求模型创建一个通用类。
e、 g.我的控制器:

  1. ResponseEntity<TransactionLog> checkDiscount(HttpServletRequest request,
  2. @RequestBody RequestCheckDiscount requestBody) {
  3. // Your code here
  4. }

我的请求模型:

  1. public class RequestCheckDiscount {
  2. private String username;
  3. private int amount;
  4. private long time;
  5. // Standard getters and setters.
  6. }

相关问题