Jackson – Java Object to JSON conversion

In this article, we will discuss Java Object to JSON conversion and vice-versa using Jackson library.

1. JSON – JavaScript Object Notation

  • Often, we need to transmit data betwen server and client (web or mobile application) and to achieve this we can use either XML or JSON
  • JSON is very popular format to exchange data between server and client
  • It is light-weight in nature and it is widely used
  • Moreover, JSON structure is self-explaining about the data it contains
  • Below is the example of Student information in JSON structure
1
2
3
4
5
{
  "rollNumber": 28,
  "name": "Mani",
  "percentage": 50.56
}

2. Java Object

  • Java object is an instance of class
  • Below is the Student class (POJO) equivalent to above mentioned JSON structure

Student.class

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
package net.bench.resources.convert.json.to.java;
 
public class Student {
 
    // member variables
    private int rollNumber;
    private String name;
    private double percentage;
 
    // default no-arg constructor
 
    // getters & setters
 
    // toString()
    @Override
    public String toString() {
        return "Student [rollNumber=" + rollNumber
                + ", name=" + name
                + ", percentage=" + percentage
                + "]";
    }
}

3. Libraries required for Jackson :

4. Maven co-ordinates :

1
2
3
4
5
6
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.13.1</version>
</dependency>

5. Conversion of Java Object to JSON :

Using Jackson API, we can convert Java Object to equivalent JSON String and vice-versa

5.1 Steps to convert Java Object to JSON :

  1. Create Java/Maven project and add required Jackson library to Build path
  2. Create POJO class for Student which we already created in the above step
  3. Create main Java class to convert Java Object to JSON using Jackson library

JavaObjectToJsonStringUsingJackson2x.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
package net.bench.resources.convert.json.to.java;
 
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
 
public class JavaObjectToJsonStringUsingJackson2x {
 
    // 1. main() method
    public static void main(String[] args) {
 
        // 1.1 get Student object
        Student student = createStudent();
 
 
        // 1.2 create ObjectMapper object
        ObjectMapper objectMapper =  new ObjectMapper();
 
 
        // 1.3 create string to store converted JSON
        String convertedJsonString = null;
 
 
        // 1.4 Jackson 2.x - Java object to JSON string
        try {
            convertedJsonString = objectMapper.writeValueAsString(student);
        }
        catch (JsonProcessingException jpex) {
            jpex.printStackTrace();
        }
 
 
        // 1.5 print to console
        System.out.println("Jackson 2.x - Java object to JSON string :- \n\n"
                + convertedJsonString);
    }
 
    // 2. This method is used to create Student object
    private static Student createStudent() {
 
        // 2.1 create Student object
        Student student = new Student();
 
 
        // 2.2 set values for Student object
        student.setRollNumber(28);
        student.setName("Farook");
        student.setPercentage(50.56);
 
 
        // 2.3 return Student object
        return student;
    }
}

Output :

1
2
3
Jackson 2.x - Java object to JSON string :-
 
{"rollNumber":28,"name":"Farook","percentage":50.56}

5.2 Steps to convert Java Object to JSON in pretty print format :

In the above conversion from Java Object to JSON, final JSON is printed in single line with no formatting. Therefore, if it is required to pretty print JSON in structured fomat then we can use writerWithDefaultPrettyPrinter() method of ObjectMapper‘s object for printing JSON in presentable format.

JavaObjectToJsonStringUsingJackson2xPrettyPrint.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
package net.bench.resources.convert.json.to.java;
 
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
 
public class JavaObjectToJsonStringUsingJackson2xPrettyPrint {
 
 
    // 1. main() method
    public static void main(String[] args) {
 
        // 1.1 get Student object
        Student student = createStudent();
 
 
        // 1.2 create ObjectMapper object
        ObjectMapper objectMapper =  new ObjectMapper();
 
 
        // 1.3 create string to store converted JSON
        String convertedJsonString = null;
 
 
        // 1.4 Jackson 2.x - Java object to JSON string
        try {
            convertedJsonString = objectMapper
                    .writerWithDefaultPrettyPrinter() // pretty print
                    .writeValueAsString(student);
        }
        catch (JsonProcessingException jpex) {
            jpex.printStackTrace();
        }
 
 
        // 1.5 pretty print to console
        System.out.println("Pretty print Jackson 2.x - Java object to JSON string :- \n\n"
                + convertedJsonString);
    }
 
    // 2. This method is used to create Student object
    private static Student createStudent() {
 
        // 2.1 create Student object
        Student student = new Student();
 
 
        // 2.2 set values for Student object
        student.setRollNumber(28);
        student.setName("Mani");
        student.setPercentage(50.56);
 
 
        // 2.3 return Student object
        return student;
    }
}

Output :

1
2
3
4
5
6
7
Pretty print Jackson 2.x - Java object to JSON string :-
 
{
  "rollNumber" : 28,
  "name" : "Mani",
  "percentage" : 50.56
}

6. JSON to Java Object conversion :

Using Jackson library, we can convert JSON String to equivalent Java Object and vice-versa

6.1 Steps to convert JSON String to Java Object :

  1. Create Java/Maven project and add required Jackson library to Build path
  2. Create POJO class for Student which we already created in the above step
  3. Create main Java class to convert JSON String to Java Object using Jackson

JsonStringToJavaObjectUsingJackson2x.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
package net.bench.resources.convert.json.to.java;
 
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
 
public class JsonStringToJavaObjectUsingJackson2x {
 
    // 1. main() method
    public static void main(String[] args) {
 
        // 1.1 original JSON string
        String jsonString = "{\"rollNumber\":28,\"name\":\"Bharathi\",\"percentage\":50.56}";
 
 
        // 1.2 create ObjectMapper object
        ObjectMapper objectMapper = new ObjectMapper();
 
 
        // 1.3 create Student POJO to store values
        Student student = null;
 
 
        // 1.4 Jackson 2.x - JSON string to Java object
        try {
            student = objectMapper.readValue(jsonString, Student.class);
        }
        catch (JsonProcessingException jpex) {
            jpex.printStackTrace();
        }
 
 
        // 1.5 print to console
        System.out.println("Jackson 2.x - JSON string to Java object :- \n\n"
                + student);
    }
}

Output :

1
2
3
Jackson 2.x - JSON string to Java object :-
 
Student [rollNumber=28, name=Bharathi, percentage=50.56]

6.2 JSON String to Java Object conversion :

This example is same like previous one except that input JSON String is formatted

JsonStringInFormattedFormToJavaObjectUsingJackson2x.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
package net.bench.resources.convert.json.to.java;
 
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
 
public class JsonStringInFormattedFormToJavaObjectUsingJackson2x {
 
    // 1. main() method
    public static void main(String[] args) {
 
        // 1.1 original JSON string
        String jsonString = "{" +
                "  \"rollNumber\" : 28," +
                "  \"name\" : \"Niyas\"," +
                "  \"percentage\" : 50.56" +
                "}";
 
 
        // 1.2 create ObjectMapper object
        ObjectMapper objectMapper = new ObjectMapper();
 
 
        // 1.3 create Student POJO to store values
        Student student = null;
 
 
        // 1.4 Jackson 2.x - JSON string to Java object
        try {
            student = objectMapper.readValue(jsonString, Student.class);
        }
        catch (JsonProcessingException jpex) {
            jpex.printStackTrace();
        }
 
 
        // 1.5 print to console
        System.out.println("Jackson 2.x - JSON string to Java object :- \n\n"
                + student);
    }
}

Output :

1
2
3
Jackson 2.x - JSON string to Java object :-
 
Student [rollNumber=28, name=Niyas, percentage=50.56]

Related Articles :

References :

Happy Coding !!
Happy Learning !!

Java – How to convert an Object to YAML using ObjectMapper ?
Gson - Java Object to JSON conversion