描述:
在前后端传递参数时,如果为JSON,后端使用@RequestBody对象类型接受数据,会出现 500/503错误。编译器同时报警告2020-07-02 16:57:19.774 WARN 16080 --- [io-7006-exec-10] .w.s.m.s.DefaultHandlerExceptionResolver :
Resolved [org.springframework.http.converter.HttpMessageNotReadableException:
JSON parse error: Cannot deserialize instance of `java.util.ArrayList<com.xxx.xxx.model.order.OrderDetail>` out of START_OBJECT token;
nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException:
Cannot deserialize instance of `java.util.ArrayList<com.xxx.xxx.model.order.OrderDetail>` out of START_OBJECT token
at [Source: (PushbackInputStream); line: 1, column: 171] (through reference chain: com.xxx.xxx.model.order.OrderInfo["orderDetailList"])]
警告内容:[org.springframework.http.converter.HttpMessageNotReadableException:
JSON parse error: Cannot deserialize instance of `java.util.ArrayList<com.xxx.xxx.model.order.OrderInfo>`
out of START_OBJECT token
com.fasterxml.jackson.databind.exc.MismatchedInputException:
Cannot deserialize instance of `java.util.ArrayList<com.xxx.xxx.model.order.OrderInfo>` out of START_OBJECT token
at [Source: (PushbackInputStream)
也就是说,在前后端发送数据时,出现JSON格式转换错误,从而访问不到后台接口。不添加 @RequestBody 虽然可以成功访问,但是无法获取到对象数据
解决
不要使用对象类型接受,统一使用 Map 接收数据,就不会出现上述情况@RequestBody Map<String, Object> data@PostMapping("/xxxx/xxxxx")
public Result submitOrder(@RequestParam("xxxx") String tradeNo, @RequestBody Map<String, Object> data) {
return Result.ok();
}
转载请注明原文地址:https://ipadbbs.8miu.com/read-30492.html