java-json
JSON in Java
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 libraries in Java:
We’re following a simple structure for each library – first some useful resources to get started (both here on Baeldung as well as external). 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
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
On Baeldung:
Other Interesting Writeups:
3.2. Maven Dependency
<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
@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:
{
"id":1,
"name":"first"
}
4. Gson
4.1. Useful Resources
On Baeldung:
Other Interesting Writeups:
4.2. Maven Dependency
<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
@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
5.1. Useful Resources
5.2. Maven Dependency
<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
@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:
{
"@type":"org.baeldung.Foo",
"id":1,
"name":"first"
}
6. Genson
6.1. Useful Resources
6.2. Maven Dependency
<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
@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