JacksonExamples¶
Utility class demonstrating common JSON operations using Jackson. Covers:
- Object → JSON
- JSON → Object
- JSON → List
- JSON → Map
- JsonNode parsing
- Nested JSON
- Custom field mapping Time Complexity: Depends on JSON size (generally O(n)) Space Complexity: O(n)
objectToJson¶
Converts a Java object into JSON string. Logic: 1. Create Java object 2. Use ObjectMapper to serialize Example: Input → User("Swapnil", 30) Output → {"name":"Swapnil","age":30}
void objectToJson() {
User user = new User("Swapnil", 30);
String json = mapper.writeValueAsString(user);
System.out.println("\n[Object → JSON]");
System.out.println(json);
}
jsonToObject¶
Converts JSON string into Java object. Logic: 1. Provide JSON input 2. Deserialize into User class Example: Input → {"name":"John","age":25} Output → User{name='John', age=25}
void jsonToObject() {
String json = "{\"name\":\"John\",\"age\":25}";
User user = mapper.readValue(json, User.class);
System.out.println("\n[JSON → Object]");
System.out.println(user);
}
jsonToList¶
Converts JSON array into List of objects. Logic: 1. Use TypeReference for generic List 2. Parse JSON array Example: Input → [{"name":"A"},{"name":"B"}] Output → List
void jsonToList() {
String json = "[{\"name\":\"A\",\"age\":10},{\"name\":\"B\",\"age\":20}]";
List<User> users = mapper.readValue(json, new TypeReference<>() {
});
System.out.println("\n[JSON → List]");
users.forEach(System.out::println);
}
jsonToMap¶
Converts JSON into Map. Logic: 1. Parse JSON into key-value structure Example: Input → {"key":"value"} Output → Map
void jsonToMap() {
String json = "{\"key1\":\"value1\",\"key2\":\"value2\"}";
Map<String, String> map = mapper.readValue(json, new TypeReference<>() {
});
System.out.println("\n[JSON → Map]");
System.out.println(map);
}
jsonNodeParsing¶
Parses JSON dynamically using JsonNode. Logic: 1. Convert JSON → tree structure 2. Access fields manually Example: node.get("name").asText()
void jsonNodeParsing() {
String json = "{\"name\":\"Dynamic\",\"age\":40}";
JsonNode node = mapper.readTree(json);
String name = node.get("name").asString();
int age = node.get("age").asInt();
System.out.println("\n[JsonNode Parsing]");
System.out.println(name + " - " + age);
}
nestedJsonParsing¶
Parses nested JSON into object hierarchy. Logic: 1. Define nested classes 2. Map JSON automatically
void nestedJsonParsing() {
String json = "{}";
Parent parent = mapper.readValue(json, Parent.class);
System.out.println("\n[Nested JSON]");
System.out.println(parent);
}
ignoreUnknownFields¶
Demonstrates ignoring unknown fields. Logic: 1. JSON contains extra fields 2. Annotation ignores them
void ignoreUnknownFields() {
String json = "{\"name\":\"Test\",\"age\":22,\"extra\":\"ignored\"}";
User user = mapper.readValue(json, User.class);
System.out.println("\n[Ignore Unknown]");
System.out.println(user);
}
customFieldMapping¶
Demonstrates custom field mapping. Logic: 1. JSON field name differs from Java field 2. Use @JsonProperty
void customFieldMapping() {
String json = "{\"user_name\":\"Mapped\",\"age\":33}";
CustomUser user = mapper.readValue(json, CustomUser.class);
System.out.println("\n[Custom Mapping]");
System.out.println(user);
}
objectToMap¶
Converts Java object into Map. Useful for dynamic transformations.
void objectToMap() {
User user = new User("Swapnil", 30);
Map<String, Object> map = mapper.convertValue(user, new TypeReference<>() {
});
System.out.println("\n[Object → Map]");
System.out.println(map);
}
mapToObject¶
Converts Map into Java object. Useful for dynamic data binding.
void mapToObject() {
Map<String, Object> map = new HashMap<>();
map.put("name", "FromMap");
map.put("age", 99);
User user = mapper.convertValue(map, User.class);
System.out.println("\n[Map → Object]");
System.out.println(user);
}
Usage¶
objectToJson();
jsonToObject();
jsonToList();
jsonToMap();
jsonNodeParsing();
nestedJsonParsing();
ignoreUnknownFields();
customFieldMapping();
objectToMap();
mapToObject();
User¶
Basic DTO representing user.
@JsonIgnoreProperties(ignoreUnknown = true)
static class User {
public String name;
public int age;
public User(String name, int age) {
this.name = name;
this.age = age;
}
public String toString() {
return "User{name='" + name + "', age=" + age + '}';
}
}
Parent¶
Nested DTO example.
static class Parent {
public String name;
public int age;
public User child;
public String toString() {
return "Parent{name='" + name + "', age=" + age + ", child=" + child + '}';
}
}
CustomUser¶
Custom mapping DTO.