Convert Java Objects to JSON with Jackson

This article will show you how to convert Java objects to JSON with Jackson.

Table of contents:

P.S Tested with Jackson 2.17.0

1. Setup Jackson

Puts jackson-databind at pom.xml.

pom.xml

  <dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.17.0</version>
  </dependency>

2. Jackson quick examples

In quick, we use Jackson’s ObjectMapper object to convert Java object to / from JSON.

writeValue() – Convert Java object to JSON string.


    ObjectMapper mapper = new ObjectMapper();

    // convert Java object to JSON file
    mapper.writeValue(new File("person.json"), object);

    // convert Java object to JSON string
    String jsonString = mapper.writeValueAsString(object);

readValue() – Convert JSON string to Java object.


    ObjectMapper mapper = new ObjectMapper();

    // JSON file to Java object
    Person obj = mapper.readValue(new File("person.json"), Person.class);

    // JSON URL to Java object
    Person obj = mapper.readValue(new URL("http://some-domains/api/person.json"), Person.class);

    // JSON string to Java Object
    String json = "{\"name\": \"mkyong\", \"age\": 20}";
    Person obj = mapper.readValue(json, Person.class);

3. Convert Java Object to JSON using Jackson

This example uses Jackson to convert a Java object Person to a JSON string.

Person.java

package com.mkyong.json.model;

public class Person {

    private String name;
    private int age;

    //getters, setters and constructors
}
ConvertObjectToJsonExample.java

package com.mkyong.json.jackson.tips;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.mkyong.json.model.Person;

public class ConvertObjectToJsonExample {

    public static void main(String[] args) {

        Person person = new Person("mkyong", 42);

        ObjectMapper om = new ObjectMapper();

        try {

            // covert Java object to JSON strings
            String json = om.writeValueAsString(person);

            // output: {"name":"mkyong","age":42}
            System.out.println(json);

        } catch (JsonProcessingException e) {
            throw new RuntimeException(e);
        }


    }
}

4. Convert JSON to Java object using Jackson

A simple JSON string.


  {
    "name": "mkyong",
    "age": 20
  }
ConvertObjectToJsonExample2.java

package com.mkyong.json.jackson.tips;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.mkyong.json.model.Person;

public class ConvertObjectToJsonExample2 {

    public static void main(String[] args) {

        String json = "{\"name\": \"mkyong\", \"age\": 20}";

        ObjectMapper om = new ObjectMapper();

        try {

            // covert JSON to Java object
            Person person = om.readValue(json, Person.class);

            // output: Person{name='mkyong', age=20}
            System.out.println(person);

        } catch (JsonProcessingException e) {
            throw new RuntimeException(e);
        }


    }
}

output


Person{name='mkyong', age=20}

5. Write Java object to JSON file

This example uses Jackson to convert a Java object Person to a JSON string and write it in a file named person.json.

ConvertObjectToJsonExample3

package com.mkyong.json.jackson.tips;

import com.fasterxml.jackson.databind.ObjectMapper;
import com.mkyong.json.model.Person;

import java.io.File;
import java.io.IOException;

public class ConvertObjectToJsonExample3 {

    public static void main(String[] args) {

        Person person = new Person("mkyong", 42);

        ObjectMapper om = new ObjectMapper();

        try {

            // convert Java object to JSON strings and save it to file `person.json`
            om.writeValue(new File("person.json"), person);

        } catch (IOException e) {
            throw new RuntimeException(e);
        }


    }
}

Output

person.json

{"name":"mkyong","age":42}

6. Read from JSON file to Java object

This example uses Jackson to read JSON from a file person.json and convert it to the Java object Person.

ConvertObjectToJsonExample4.java

package com.mkyong.json.jackson.tips;

import com.fasterxml.jackson.databind.ObjectMapper;
import com.mkyong.json.model.Person;

import java.io.File;
import java.io.IOException;

public class ConvertObjectToJsonExample4 {

    public static void main(String[] args) {

        ObjectMapper om = new ObjectMapper();

        try {

            // read JSON from a file and convert it to Java object
            Person person = om.readValue(new File("person.json"), Person.class);

            System.out.println(person);

        } catch (IOException e) {
            throw new RuntimeException(e);
        }


    }
}

7. FAQs

Q: What is the difference between Jackson 1 and Jackson 2?
A: Most of the APIs still maintain the same method name and signature; the packaging is different.

  • Jackson 1.x – org.codehaus.jackson.map
  • Jackson 2.x – com.fasterxml.jackson.databind

Q: How about using Jackson to parse the JSON array?
A: Refer to this parse JSON Array with Jackson

8. Download Source Code

9. References

One comment on “Convert Java Objects to JSON with Jackson”

  1. Hello Mkyong,
    What is the best way to compare jsons in Junit ?
    Can Jackson do that ?
    Do you have any example ?
    Thanks a lot.

    Reply

Leave a Comment

Your email address will not be published. Required fields are marked *