当前位置: 首页 > 知识库问答 >
问题:

假装客户端无法将响应json转换为Java对象,因为开头的字符无效

陆烨磊
2023-03-14

我创建了一个假客户机EmployeeServiceClient.java,如下所示

@FeignClient(name = "employeeclient", url = "https://internel.omnesys.org")
public interface EmployeeServiceClient {
    @RequestMapping(method = RequestMethod.GET, value = "/v1/employees")
    List<EmployeeDetails> getEmployeeDetails();
}

Employeedetails.java

public class EmployeeDetails {
  private Employee employee;
  private String empId;
  // getters and setters
}

Employee.java

public class Employee {
  private String name;
  private String firstName;
  private String lastName;
  private String city;
  // getters and setters
}

服务https://internel.omnesys.org/v1/employees(这是一个由不同团队管理的intranet REST服务)为我提供了如下所示的响应寿命

)}]',
[{"employee":{"name":"Emp1","firstName":"firstName1","lastName":"lastName1","city":"city1"},"empId":"empId123"},{"employee":{"name":"Emp2","firstName":"firstName2","lastName":"lastName2","city":"city2"},"empId":"empId456"}]

共有1个答案

徐翔
2023-03-14

我看到三种选择:

>

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

    将方法签名更改为返回Feign.Response并自行处理:

    @FeignClient(name = "employeeclient", url = "https://internel.omnesys.org")
    public interface EmployeeServiceClient {
      @RequestMapping(method = RequestMethod.GET, value = "/v1/employees")
      feign.Response getEmployeeDetails();
    }
    

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

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

  •  类似资料:
    • 我无法将给定的Json字符串转换为java对象

    • 我正在处理jBPM 7.22.0。最终的 我使用服务任务REST从这个api获取响应https://reqres.in/api/users/1 我想将此响应获取到一个对象中,因此我创建了这个类(或jBPM中调用的数据对象): 我在jBPM中创建了一个名为res的全局变量,该变量具有我要存储响应的数据对象的类型。因此,在我的REST服务任务的“任务”中,我有屏幕截图中的内容。 如您所见,我想将结果存

    • 问题内容: 我一直在寻找与将JSON字符串转换为Java对象有关的示例,但没有找到任何好的示例。我发现的那个曾经真的很基础,却没有真正处理复杂的JSON字符串。 我正在制作一个使用谷歌翻译API将字符串从英语翻译成不同语言的应用程序。Google的查询回应是…以下文字采用JSON格式, 到目前为止,我的方法是使用GSON API,但实际上,我被该如何处理这个复杂的结果并创建Java对象所困扰? 我

    • 问题内容: 我有一个无效的json字符串,如下所示, 我尝试使用JSON.parse将其转换为对象。但是,这不是有效的json字符串。是否有任何函数可以将这种无效格式转换为有效的json字符串或直接转换为对象? 问题答案: 如果您的示例语法与真实JSON相同,则JSONLint表示您需要对名称和值使用双引号。 仅在这种情况下,请使用以下替换调用: 但是,您首先应该尝试使用有效的Json。

    • 问题内容: 我收到错误消息: 这是我的代码: 问题答案: 在返回一个对象的资源到你的变量,而不是一个字符串。 您需要将其循环,然后访问记录。您只是不能直接将其用作变量。 编码…

    • 问题内容: 我是后端代码的新手,我正在尝试创建一个将对我的JSON字符串进行响应的函数。我目前有一个例子 这基本上只是打印字符串“应该以JSON形式出现的随机数”。我要执行的操作是使用任何数字的JSON字符串进行响应。我需要放置其他内容类型吗?该函数应该将该值传递给客户端的另一个用户吗? 谢谢你的帮助! 问题答案: 在Express中使用res.json: 或者: