Article

JSON in Java

August 16, 2017
Learn something new. Take control of your career.
Sign up

1. Overview

Working with JSON data in Java can be easy but – like most anything in Java – there are a lot of options and libraries we can chose from.

This guide should make that choice easier and should give you a solid understanding of the ecosystem right now. We’ll discuss the most common JSON processing and libraries in Java:

We’re following a simple structure for each library – first some useful resources to get started (both from my site, Baeldung, as well as others). Then we’re going to go over a basic code example just to see how working with the library actually looks like.

2. Popularity and Basic Stats

First, let’s start with some statistics as a proxy for the popularity of each library:

2.1. Jackson 

2.2. Gson

2.3. json-io

2.4. Genson

3. Jackson

Next, let’s have a look at the most popular of these – Jackson. Jackson is a multi-purpose Java library for processing JSON data.

3.1. Useful Resources

Here are some official resources for the library:

On Baeldung:

Other Interesting Writeups:

3.2. Maven Dependency

To use the library – here’s the Maven dependency to add into your pom.xml:

1
2
3
4
5
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>${jackson.version}</version>
</dependency>

Note that the latest version of Jackson right now is 2.6.3.

3.3. Simple Example with Jackson

Now, let’s see how to use Jackson in a simple example:

1
2
3
4
5
6
7
8
9
10
@Test
public void whenSerializeAndDeserializeUsingJackson_thenCorrect()
  throws IOException{
    Foo foo = new Foo(1,"first");
    ObjectMapper mapper = new ObjectMapper();
 
    String jsonStr = mapper.writeValueAsString(foo);
    Foo result = mapper.readValue(jsonStr, Foo.class);
    assertEquals(foo.getId(),result.getId());
}

Note that:

  • ObjectMapper.writeValueAsString() is used to serialize Object to JSON string.
  • ObjectMapper.readValue() is used to deserialize JSON string to Java Object.
  • Sample JSON output:
1
2
3
4
{
    "id":1,
    "name":"first"
}

4. Gson

Gson is the next Java JSON library that we’re going to be looking at.

4.1. Useful Resources

Here are some official resources for the library:

On Baeldung:

Other Interesting Writeups:

4.2. Maven Dependency

1
2
3
4
5
<dependency>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson</artifactId>
    <version>${gson.version}</version>
</dependency>

Note that the latest version of Gson right now is 2.4.

4.3. Simple Example with Gson

Here is a simple example clarify how to use Gson to serialize/desrialize JSON:

1
2
3
4
5
6
7
8
9
@Test
public void whenSerializeAndDeserializeUsingGson_thenCorrect(){
    Gson gson = new Gson();
    Foo foo = new Foo(1,"first");
 
    String jsonStr = gson.toJson(foo);
    Foo result = gson.fromJson(jsonStr, Foo.class);
    assertEquals(foo.getId(),result.getId());
}

Note that:

  • Gson.toJson() is used to serialize Object to JSON
  • Gson.fromJson() is used to desrialize JSON to Java Object

5. Json-io

Json-io is a simple Java library to serialize/deserialize JSON.

5.1. Useful Resources

Here are some official resources for the library:

5.2. Maven Dependency

1
2
3
4
5
<dependency>
    <groupId>com.cedarsoftware</groupId>
    <artifactId>json-io</artifactId>
    <version>${json-io.version}</version>
</dependency>

Note that the latest version of json-io right now is 4.1.9.

5.3. Simple Example with json-io

Now, let’s take a look at a simple example of using json-io:

1
2
3
4
5
6
7
8
@Test
public void whenSerializeAndDeserializeUsingJsonio_thenCorrect(){
    Foo foo = new Foo(1,"first");
 
    String jsonStr = JsonWriter.objectToJson(foo);
    Foo result = (Foo) JsonReader.jsonToJava(jsonStr);
    assertEquals(foo.getId(),result.getId());
}

Note that:

  • JsonWriter.objectToJson() is used to serialize Object to JSON.
  • JsonReader.jsonToJava() is used to deserialize Json to Java Object.
  • Sample JSON output:
1
2
3
4
5
{
    "@type":"org.baeldung.Foo",
    "id":1,
    "name":"first"
}

6. Genson

Genson is a Java and Scala to JSON conversion library, providing full databinding and streaming.

6.1. Useful Resources

Here are some official resources for the library:

6.2. Maven Dependency

1
2
3
4
5
<dependency>
    <groupId>com.owlike</groupId>
    <artifactId>genson</artifactId>
    <version>${genson.version}</version>
</dependency>

Note that the latest version of Genson right now is 1.3.

6.3. Simple Example with Genson

Here’s a simple example of working with the library:

1
2
3
4
5
6
7
8
9
@Test
public void whenSerializeAndDeserializeUsingGenson_thenCorrect(){
    Genson genson = new Genson();
    Foo foo = new Foo(1,"first");
 
    String jsonStr = genson.serialize(foo);
    Foo result = genson.deserialize(jsonStr, Foo.class);
    assertEquals(foo.getId(),result.getId());
}

Note that:

  • Genson.serialize() is used to serialize Object to JSON
  • Genson.desrialize() is used to deserialize JSON to Java Object

7. Conclusion

In this quick overview article, we learned about the most common JSON processing libraries in Java.

This article is by Eugen Paraschiv from baeldung.com.

Learn something new. Take control of your career.
Sign up