To parse JSON responses easily using Java 11’s HttpClient, you can use libraries like Jackson or Gson that help in converting a JSON string to Java objects (POJOs) without hassle.
Here’s a step-by-step guide:
Step 1: Create a Java 11 HttpClient request
- Use Java’s
HttpClientto make an HTTP request and get the JSON response as a string. - Use
HttpRequestorHttpResponseas part of the Java 11HttpClientAPI.
Step 2: Add Jackson or Gson to Parse JSON
- Jackson: Add the dependency to your
pom.xml(for Maven):<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.15.2</version> </dependency> - Gson: Add this dependency:
<dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.10.1</version> </dependency>
Step 3: Example Using Jackson
package org.kodejava.net.http; import com.fasterxml.jackson.databind.ObjectMapper; import java.net.http.HttpClient; import java.net.http.HttpRequest; import java.net.http.HttpResponse; import java.net.URI; public class HttpClientJacksonExample { public static void main(String[] args) throws Exception { // 1. Create an HttpClient HttpClient client = HttpClient.newHttpClient(); // 2. Create an HttpRequest HttpRequest request = HttpRequest.newBuilder() .uri(new URI("https://jsonplaceholder.typicode.com/posts/1")) // Example URL .GET() .build(); // 3. Send the HttpRequest and get an HttpResponse HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString()); // 4. Parse JSON String Response to a Java Object using Jackson ObjectMapper mapper = new ObjectMapper(); Post post = mapper.readValue(response.body(), Post.class); // 5. Use the parsed object System.out.println("Post Title: " + post.getTitle()); } // Sample POJO to match the JSON structure public static class Post { private int userId; private int id; private String title; private String body; // Getters and Setters public int getUserId() { return userId; } public void setUserId(int userId) { this.userId = userId; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getBody() { return body; } public void setBody(String body) { this.body = body; } } } Step 4: Example Using Gson
package org.kodejava.net.http; import com.google.gson.Gson; import java.net.http.HttpClient; import java.net.http.HttpRequest; import java.net.http.HttpResponse; import java.net.URI; public class HttpClientGsonExample { public static void main(String[] args) throws Exception { // 1. Create HttpClient HttpClient client = HttpClient.newHttpClient(); // 2. Create HttpRequest HttpRequest request = HttpRequest.newBuilder() .uri(new URI("https://jsonplaceholder.typicode.com/posts/1")) // Example URL .GET() .build(); // 3. Send HttpRequest and get HttpResponse HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString()); // 4. Parse JSON String response to Java Object using Gson Gson gson = new Gson(); Post post = gson.fromJson(response.body(), Post.class); // 5. Use the parsed object System.out.println("Post Title: " + post.getTitle()); } // Sample POJO class to match the JSON structure public static class Post { private int userId; private int id; private String title; private String body; // Getters and Setters public int getUserId() { return userId; } public void setUserId(int userId) { this.userId = userId; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getBody() { return body; } public void setBody(String body) { this.body = body; } } } Key Points:
- Serialization and Deserialization: POJO structure must match your JSON’s keys.
- Why Jackson or Gson?
They are robust and simplify working with JSON (and even converting nested structures).
