Fegin调用时出现JSON parse error:can not deserialize instance of ...
json
适用于现代 C++ 的 JSON。
项目地址:https://gitcode.com/gh_mirrors/js/json
免费下载资源
·
一、问题
接口调用时提示json解析报错,如图
二、解决
通过排查发现Fegin调用时出现问题,Fegin调用的代码时这样写的:
employeeFeignClient.addRole(iamOrganizationId,employeeId,roleIds);
Fegin类是这样写的:
@PutMapping("/v1/{iam_organization_id}/organizations/employee/{employee_id}/role")
ResponseEntity<Integer> addRole(@PathVariable("iam_organization_id") Long iamOrganizationId,
@PathVariable("employee_id") Long employeeId,
@RequestBody List<Long> roleList) ;
json报错那可能在 @RequestBody这个参数这里出现问题,对比了调用服务的接口如下:
@Permission(level = ResourceLevel.ORGANIZATION)
@PutMapping("/{employee_id}/role")
@ApiOperation(value = "员工批量添加/修改角色")
public ResponseEntity<Integer> addRole(@PathVariable("iam_organization_id") Long iamOrganizationId,
@PathVariable("employee_id") Long employeeId,
@RequestBody List<Long> roleList) {
return Optional.ofNullable(employeeService.addRole(iamOrganizationId, employeeId, roleList))
.map(flag -> new ResponseEntity<>(flag, HttpStatus.OK))
.orElseThrow(() -> new CommonException(ResponseCode.ERROR_ADD.getDesc()));
}
仔细检查后Fegin类是没问题的,问题出在在fegin调用的时候requestBody参数名字不一样。Fegin类的参数名为roleList,接口调用时候参数名为roleIds,导致报错。将方法里参数名改为跟Fegin类的参数名一样后解决了此问题。
三、结论
Fegin调用时出现JSON报错时,检查Fegin类里与接口调用里的@requestBody参数对应的名字是否一致。
GitHub 加速计划 / js / json
41.72 K
6.61 K
下载
适用于现代 C++ 的 JSON。
最近提交(Master分支:1 个月前 )
960b763e
4 个月前
8c391e04
6 个月前
更多推荐
已为社区贡献2条内容
所有评论(0)