为了账号安全,请及时绑定邮箱和手机立即绑定

由于开头的字符无效,Feign Client 无法将响应 json 转换为 Java Object

由于开头的字符无效,Feign Client 无法将响应 json 转换为 Java Object

噜噜哒 2021-12-10 14:36:54
我创建了一个 Feign 客户端 EmployeeServiceClient.java 如下所示员工服务客户端.java@FeignClient(name = "employeeclient", url = "https://internel.omnesys.org")public interface EmployeeServiceClient {    @RequestMapping(method = RequestMethod.GET, value = "/v1/employees")    List<EmployeeDetails> getEmployeeDetails();}员工详细信息.javapublic class EmployeeDetails {  private Employee employee;  private String empId;  // getters and setters}雇员.javapublic class Employee {  private String name;  private String firstName;  private String lastName;  private String city;  // getters and setters}服务 https://internel.omnesys.org/v1/employees(这是一个由不同团队管理的内网 REST 服务)给了我如下所示的响应寿命)}]',[{"employee":{"name":"Emp1","firstName":"firstName1","lastName":"lastName1","city":"city1"},"empId":"empId123"},{"employee":{"name":"Emp2","firstName":"firstName2","lastName":"lastName2","city":"city2"},"empId":"empId456"}]我收到假异常,因为服务响应)}]',在开始时包含一个额外的我已经要求服务团队删除那些无效字符,但他们说不可能删除它,因为它是为了其他一些要求而故意放置的,并要求我从我们的角度处理它。任何人都可以帮我解决这个问题吗
查看完整描述

1 回答

?
倚天杖

TA贡献1828条经验 获得超3个赞

我看到三个选项:


使用自定义配置自定义您的客户端,并提供您自己的解码器来处理疯狂的响应;) 扩展ResponseEntityDecoder并添加您的特殊响应处理。


修改方法签名,返回feign.Response,自行处理:


@FeignClient(name = "employeeclient", url = "https://internel.omnesys.org")

public interface EmployeeServiceClient {

  @RequestMapping(method = RequestMethod.GET, value = "/v1/employees")

  feign.Response getEmployeeDetails();

}

类似于第二个选项:更改您的方法签名以返回字符串。清理生成的字符串后,您将能够通过 jackson 等将 json 映射到您的类。

请注意:对于 2. 和 3.,根本不会有错误处理,您应该注意这一点


如果不选择第一个选项来隐藏解析和异常处理并确保当前方法签名,还可以考虑添加适配器。


查看完整回答
反对 回复 2021-12-10
  • 1 回答
  • 0 关注
  • 369 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号