从休息客户端接收响应作为 Java 对象
Receiving reponse from a rest client as a Java object
我看过一个Jersey tutorial,它的网络客户端returns似乎是一个字符串类型的响应,这意味着我需要自己解析响应。
Java(或第三方)中是否有任何库可以自动将响应从 JSON 转换为 Java?它可以通过使用泛型来理解。例如假设我希望响应主体是一个 Person 数组,那么我会做类似的事情:
FooResponse response = FooRestClient.makeRequest<Person[]>("http://www.foo.com/api/people","GET");
Person[] people = response.status == 200 ? response.body : [];
如果没有办法做到这一点(或类似的),解析响应然后将响应主体转换为 Java 对象的最简单方法是什么?
我建议你阅读Chapter 8 and 9 of Jersey docs。第 8 章是关于实体提供者的,并解释了如何从不同的 Java 类型完成转换。例如从 JSON 到 POJO 的转换。第 9 章讨论了 Jersey 提供的一些提供程序,包括用于 JSON/XML to/from POJO 转换的提供程序。
一旦您注册了这些实体提供程序之一,那么您应该能够进行所需的转换,而不仅仅是字符串。例如,如果您添加 jersey-media-json-jackson
提供程序,则可以将 JSON 转换为 POJO。
Response res = client.target(url).request().get();
MyPojo pojo = res.readEntity(MyPojo.class);
我看过一个Jersey tutorial,它的网络客户端returns似乎是一个字符串类型的响应,这意味着我需要自己解析响应。
Java(或第三方)中是否有任何库可以自动将响应从 JSON 转换为 Java?它可以通过使用泛型来理解。例如假设我希望响应主体是一个 Person 数组,那么我会做类似的事情:
FooResponse response = FooRestClient.makeRequest<Person[]>("http://www.foo.com/api/people","GET");
Person[] people = response.status == 200 ? response.body : [];
如果没有办法做到这一点(或类似的),解析响应然后将响应主体转换为 Java 对象的最简单方法是什么?
我建议你阅读Chapter 8 and 9 of Jersey docs。第 8 章是关于实体提供者的,并解释了如何从不同的 Java 类型完成转换。例如从 JSON 到 POJO 的转换。第 9 章讨论了 Jersey 提供的一些提供程序,包括用于 JSON/XML to/from POJO 转换的提供程序。
一旦您注册了这些实体提供程序之一,那么您应该能够进行所需的转换,而不仅仅是字符串。例如,如果您添加 jersey-media-json-jackson
提供程序,则可以将 JSON 转换为 POJO。
Response res = client.target(url).request().get();
MyPojo pojo = res.readEntity(MyPojo.class);