How to map HttpResponse in a Object Java

Viewed 4374

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!!

2 Answers

There are various approaches to your problem.

  1. Simplest: Use Gson, which can map a JSON response automatically to a given Object type (Instead of theJsonString you can also pass a InputStream or similar):
Gson gson = new GsonBuilder().create();
gson.fromJson(theJsonString, MyObject.class);
  1. Medium: What you are doing is already correct. You only need to parse the String you are getting to your MyObject.

  2. 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.

Related