Convert JSON to Java
classes online, free & instant
Paste your JSON and generate strongly-typed Java POJO classes in one click. Automatic type inference, nested class generation, and standard naming conventions. Runs entirely in your browser.
Open JSON to Java ConverterFrom JSON to type-safe Java in seconds
No account. No upload. No nonsense.
100% Private
Your JSON never leaves your device. There is no server receiving your data.
Instant Output
Conversion happens as you type. No round-trips to a backend, no latency.
Java-Ready Code
Generated POJOs follow standard Java naming conventions and work with all major JSON libraries.
Related JSON tools
Common questions answered
Is the JSON to Java converter free?
Yes, completely free with no account or signup required. The converter runs entirely in your browser.
What Java types does the converter generate from JSON?
JSON strings map to String, numbers to int or double (based on whether they contain decimals), booleans to boolean, arrays to List<T>, and nested objects to inner classes with their own typed fields.
Does it generate getters and setters?
The converter generates clean POJO classes with private fields. You can easily add getters and setters or use Lombok annotations (@Data, @Getter, @Setter) in your project.
Can I use the generated classes with Jackson or Gson?
Yes. The generated POJOs follow standard Java naming conventions and work directly with Jackson, Gson, Moshi, and other JSON serialization libraries without modification.
Is my data sent to a server during conversion?
No. All conversion runs entirely in your browser using JavaScript. Your JSON is never uploaded or transmitted to any server.
Converting JSON to Java classes
Java uses Jackson or Gson for JSON serialization, requiring Java classes (POJOs) with matching fields. This tool generates complete class definitions with proper types (String, int, double, boolean), getter/setter methods, and @JsonProperty annotations for Jackson compatibility.
The converter follows Java conventions: PascalCase class names, camelCase fields with private access, JavaBean getter/setter pattern, and List<T> for arrays. The output includes Jackson imports. For modern Java, it can produce Java 16+ record types, which are more concise than traditional POJOs.
{
"name": "Alice",
"age": 30,
"roles": ["admin"],
"address": {
"city": "Portland"
}
}
public class Root {
private String name;
private int age;
private List<String> roles;
private Address address;
// getters and setters
public String getName() {
return name;
}
// ... (generated for all fields)
}
Get the most out of this tool
- Use Java records (Java 16+) for immutable DTOs — more concise than traditional POJOs with getters/setters.
- Jackson @JsonProperty maps JSON keys to Java fields when they differ in casing or naming.
- Nested JSON objects generate separate classes — organize as inner classes or in a separate package.
Ready to convert your JSON to Java?
Free forever. No signup. Works offline.
Convert JSON to Java nowJava POJO generation from JSON explained
Java's strong typing means you must define explicit classes to deserialize JSON into typed objects. The two most widely used Java JSON libraries are Jackson (by FasterXML, used by Spring Boot by default) and Gson (by Google, common in Android development). Both support deserializing JSON into Plain Old Java Objects (POJOs) — regular Java classes with fields and getter/setter methods. This converter generates Java POJOs with Jackson annotations, which is the standard for Spring Boot applications.
The converter maps JSON types to Java types with specific conventions. JSON strings become String. JSON integers become int (primitive) or Integer (boxed) — the boxed form is preferred when null is possible. JSON floating-point numbers become double or Double. JSON booleans become boolean or Boolean. JSON null maps to null for boxed types. Arrays become List<T> (from java.util.List), and nested objects become separate Java class files — each nested object gets its own public class.
Jackson annotations handle the naming mismatch between JSON conventions and Java conventions. JSON APIs typically use camelCase or snake_case keys. Java classes use camelCase fields by default, which maps well to camelCase JSON. For snake_case JSON keys, the @JsonProperty("field_name") annotation maps the snake_case JSON key to a camelCase Java field name. Alternatively, configuring ObjectMapper with MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES handles case differences globally.
Spring Boot auto-configures Jackson for JSON serialization and deserialization in REST controllers. @RestController methods that return Java objects are automatically serialized to JSON. @RequestBody parameters are automatically deserialized from the request JSON. The generated Java classes work directly as Spring MVC request and response types. Spring Boot also provides @JsonCreator and @JsonProperty on constructors for immutable deserialization.
Java 14+ records provide a concise alternative to traditional POJOs for immutable data models. A Java record automatically generates a canonical constructor, getters, equals(), hashCode(), and toString(). Jackson 2.12+ supports records natively. For new Spring Boot 3+ projects (Java 17+), records are an excellent choice for JSON DTOs — they are more concise than classes with boilerplate getters and setters, reducing the code that needs to be written and maintained.
Lombok is a popular Java annotation processor that reduces boilerplate in POJOs. @Data generates getters, setters, equals(), hashCode(), and toString(). @Builder generates a builder pattern. @NoArgsConstructor and @AllArgsConstructor generate constructors. Many developers combine Lombok annotations with Jackson annotations for clean, readable POJO code. The converter generates standard POJOs that you can optionally annotate with Lombok for brevity.
When developers use this tool
Additional frequently asked questions
Should I use Jackson or Gson for JSON in Java?
For Spring Boot projects, use Jackson — it is the default and deeply integrated with the framework. For Android apps, Gson is lighter and historically more popular, though kotlinx.serialization is now the preferred choice for Android with Kotlin. For non-Spring Java applications, Jackson is more feature-rich and actively maintained.
How do I handle JSON fields whose names are Java reserved keywords?
Use the @JsonProperty annotation: @JsonProperty("class") private String className. Choose a legal Java identifier for the field name and map it to the JSON key with the annotation. Common conflicts include "class", "interface", "static", "int", and "new".
Can I deserialize JSON into an immutable Java class?
Yes, using Jackson's @JsonCreator on a constructor with @JsonProperty-annotated parameters. Jackson calls the annotated constructor with the deserialized values, building the immutable object without needing setters. Java records (Java 14+) provide this pattern with minimal boilerplate and full Jackson 2.12+ support.
How do I handle polymorphic JSON (different shapes for the same field)?
Jackson handles polymorphism with @JsonTypeInfo and @JsonSubTypes annotations. Mark the base class with these annotations, specifying a discriminator field (e.g., "type") and the subtype mappings. Jackson then deserializes each JSON object to the appropriate subclass based on the discriminator value.