如何在对象中映射 HttpResponse Java
How to map HttpResponse in a Object Java
我正在通过 HttpClient 进行 GET REST 调用:
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(endpoint))
.GET()
.header("Authorization", authHeader)
.header("Content-Type", "application/json")
.build();
HttpResponse<String> response = client.send(
request, HttpResponse.BodyHandlers.ofString());
如何映射 MyObject 对象中的响应?首先将其作为字符串拦截是否正确?另外,我需要传递一个字符串作为路径参数,但我不知道在哪里添加它。
感谢支持!!
有多种方法可以解决您的问题。
- 最简单:使用 Gson,它可以将 JSON 响应自动映射到给定的对象类型(而不是
theJsonString
,您还可以传递 InputStream
或类似的):
Gson gson = new GsonBuilder().create();
gson.fromJson(theJsonString, MyObject.class);
中:你做的已经是正确的了。您只需要解析 String
就可以得到 MyObject
.
困难:您可以编写自己的 HttpResponse.BodyHandler<MyObject>
,将响应转换为 MyObject
。
如果您能够使用外部库,请务必使用 Gson 或类似的库。
另一个常用的库是 Jackson ObjectMapper。使用 ObjectMapper,您可以将主体映射到这样的对象:
String json = response.body(); // "{ \"name\" : \"Nemo\", \"type\" : \"Fish\" }";
Animal nemo = objectMapper.readValue(json, Animal.class);
有关分步指南,请参阅 https://www.baeldung.com/jackson-object-mapper-tutorial#2-json-to-java-object
我正在通过 HttpClient 进行 GET REST 调用:
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(endpoint))
.GET()
.header("Authorization", authHeader)
.header("Content-Type", "application/json")
.build();
HttpResponse<String> response = client.send(
request, HttpResponse.BodyHandlers.ofString());
如何映射 MyObject 对象中的响应?首先将其作为字符串拦截是否正确?另外,我需要传递一个字符串作为路径参数,但我不知道在哪里添加它。
感谢支持!!
有多种方法可以解决您的问题。
- 最简单:使用 Gson,它可以将 JSON 响应自动映射到给定的对象类型(而不是
theJsonString
,您还可以传递InputStream
或类似的):
Gson gson = new GsonBuilder().create();
gson.fromJson(theJsonString, MyObject.class);
中:你做的已经是正确的了。您只需要解析
String
就可以得到MyObject
.困难:您可以编写自己的
HttpResponse.BodyHandler<MyObject>
,将响应转换为MyObject
。
如果您能够使用外部库,请务必使用 Gson 或类似的库。
另一个常用的库是 Jackson ObjectMapper。使用 ObjectMapper,您可以将主体映射到这样的对象:
String json = response.body(); // "{ \"name\" : \"Nemo\", \"type\" : \"Fish\" }";
Animal nemo = objectMapper.readValue(json, Animal.class);
有关分步指南,请参阅 https://www.baeldung.com/jackson-object-mapper-tutorial#2-json-to-java-object