JSON in Java — Jackson, Gson & org.json
Java does not have built-in JSON support, but three libraries dominate: Jackson (most popular in enterprise), Gson (from Google, simple API), and org.json (lightweight, no dependencies).
Jackson — parse JSON into a POJO
Jackson's ObjectMapper is the standard choice for enterprise Java. Add com.fasterxml.jackson.core:jackson-databind to your build.
import com.fasterxml.jackson.databind.ObjectMapper;
public class User {
public int id;
public String name;
public String email;
}
ObjectMapper mapper = new ObjectMapper();
String json = "{"id":1,"name":"Alice","email":"alice@example.com"}";
User user = mapper.readValue(json, User.class);
System.out.println(user.name); // AliceJackson — serialize to JSON
Use mapper.writeValueAsString() to serialize a POJO to a JSON string.
User user = new User();
user.id = 1;
user.name = "Alice";
String json = mapper.writeValueAsString(user);
// {"id":1,"name":"Alice","email":null}
// Pretty-print
String pretty = mapper
.writerWithDefaultPrettyPrinter()
.writeValueAsString(user);Gson — parse and serialize
Gson is simpler for small projects. Add com.google.code.gson:gson to your build.
import com.google.gson.Gson;
Gson gson = new Gson();
// Parse
User user = gson.fromJson(json, User.class);
// Serialize
String output = gson.toJson(user);Handle JSON parse errors in Java
Jackson throws JsonProcessingException (a checked exception) on parse failure. Always handle it.
import com.fasterxml.jackson.core.JsonProcessingException;
try {
User user = mapper.readValue("{invalid}", User.class);
} catch (JsonProcessingException e) {
System.err.println("Parse error: " + e.getOriginalMessage());
}Related Tools
Frequently Asked Questions
What is the best JSON library for Java?▾
Jackson (jackson-databind) is the most widely used in enterprise Java. Gson is simpler for smaller projects. For Spring Boot, Jackson is included by default.
How do I parse JSON in Java with Jackson?▾
Create an ObjectMapper and call mapper.readValue(jsonString, MyClass.class). Your class needs a no-arg constructor or Jackson annotations.
How do I ignore unknown JSON properties in Jackson?▾
Add @JsonIgnoreProperties(ignoreUnknown = true) to your class, or configure the ObjectMapper globally: mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false).
How do I serialize null fields in Jackson?▾
By default, null fields are included. To skip them globally: mapper.setSerializationInclusion(Include.NON_NULL). Or use @JsonInclude(Include.NON_NULL) on the class.
What is the difference between Jackson and Gson?▾
Jackson is faster and has more features (streaming API, tree model, extensive annotations). Gson is simpler to use with minimal configuration. For most Java/Spring projects, Jackson is the better choice.
JSON in Other Languages
Format and validate your JSON instantly
Free, no ads, no sign-up. Also converts JSON to TypeScript, YAML, CSV, and more.
Open JSON Formatter →If jsondecode.com saved you time, share it with your team
Free forever. No ads. No sign-up. Help other developers find it.