from Array value (token `JsonToken.START_ARRAY`); nested exception is com.fasterxml.jackson.databind

项目场景:

Axios发送数组请求后端接口报错400
{
"message": "Request failed with status code 400",
"name": "AxiosError",
"stack": "AxiosError: Request failed with status code 400\n    at settle (webpack-internal:///./node_modules/axios/lib/core/settle.js:21:12)\n    at XMLHttpRequest.onloadend (webpack-internal:///./node_modules/axios/lib/adapters/xhr.js:120:79)",
"config": {
"transitional": {
"silentJSONParsing": true,
"forcedJSONParsing": true,
"clarifyTimeoutError": false
},
"adapter": [
"xhr",
"http"
],
"transformRequest": [
null
],
"transformResponse": [
null
],
"timeout": 10000,
"xsrfCookieName": "XSRF-TOKEN",
"xsrfHeaderName": "X-XSRF-TOKEN",
"maxContentLength": -1,
"maxBodyLength": -1,
"env": {},
"headers": {
"Accept": "application/json, text/plain, */*",
"Content-Type": "application/json",
"token": "eyJhbGciOiJIUzI1NiJ9.eyJqdGkiOiJhMTliY2IyNWQ3MzU0YjgyODk3NzM3MDZiMDJlMDVhYiIsInN1YiI6IjMwIiwiaXNzIjoic2ciLCJpYXQiOjE3MTAxMjU3NDgsImV4cCI6MTcxMDEyOTM0OH0.G-ExDCVqjHgWFMlbuMTRV7HgDKnRGy5zwfXMvnP7vms"
},
"baseURL": "http://localhost:9090",
"url": "/user",
"method": "post",
"data": "[24]"
},
"code": "ERR_BAD_REQUEST",
"status": 400
}


问题描述

SpringBoot警告内容:Resolved [org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot deserialize value of type com.xx.xx.xx.User from Array value (token JsonToken.START_ARRAY); nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize value of type com.xx.xx.xx.User from Array value (token JsonToken.START_ARRAY) at [Source: (org.springframework.util.StreamUtils$NonClosingInputStream); line: 1, column: 1]]

后端代码:

    @DeleteMapping
    @PreAuthorize("hasAuthority('ROLE_ADMIN')")
    public ResponseEntity<Object> removeUser(@RequestBody List<Integer> ids) {
        return new ResponseEntity<>(userService.removeUser(ids), HttpStatus.OK);
    }

原因分析:

使用postman请求后端没有警告,使用axios请求报错。
在这里插入图片描述
在这里插入图片描述

这是一个Jackson库的异常,表示在反序列化JSON时发生了输入不匹配的错误。可能是JSON格式不正确或与Java对象不匹配。需要检査JSON格式和Java对象的匹配性。


解决方案:

前端:axios请求方法更换为method: ‘delete’

export function XXXXX(url, data) {
  return request({
    url: url,
    method: 'delete',
    data: data
  })
}

后端代码:

    @DeleteMapping
    @PreAuthorize("hasAuthority('ROLE_ADMIN')")
    public ResponseEntity<Object> removeUser(@RequestBody List<Integer> ids) {
        return new ResponseEntity<>(userService.removeUser(ids), HttpStatus.OK);
    }
  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值