Skip to content

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.

static class CustomUser {

    @JsonProperty("user_name")
    public String name;

    public int age;

    public String toString() {
        return "CustomUser{name='" + name + "', age=" + age + '}';
    }
}