本文主要是介绍Fegin调用时出现JSON parse error:can not deserialize instance of ...,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一、问题
接口调用时提示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参数对应的名字是否一致。
这篇关于Fegin调用时出现JSON parse error:can not deserialize instance of ...的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!