I'm making a GET REST call via HttpClient:
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());
How can I map the response in the MyObject object? Is it correct to intercept it as a String first? also, I would need to pass a string as a path parameter, but I don't know where to add it.
Thanks for the support!!
Another commonly used library for this is Jackson ObjectMapper. Using ObjectMapper, you can map the body to an object like this:
String json = response.body(); // "{ \"name\" : \"Nemo\", \"type\" : \"Fish\" }";
Animal nemo = objectMapper.readValue(json, Animal.class);
For a step by step guide, see https://www.baeldung.com/jackson-object-mapper-tutorial#2-json-to-java-object
There are various approaches to your problem.
theJsonString
you can also pass a InputStream
or similar):Gson gson = new GsonBuilder().create();
gson.fromJson(theJsonString, MyObject.class);
Medium: What you are doing is already correct. You only need to parse the String
you are getting to your MyObject
.
Hard: You can write your own HttpResponse.BodyHandler<MyObject>
, which converts the response to a MyObject
.
If you are able to use external libraries, definetly use Gson or similar.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.