- Given Map of String & object (Map<String,Object>), we would like to convert Map to/from JSON.
- We will use the jackson’s objectmapper to serialize Map to JSON & deserialize JSON to Map.
- We will create Person class & we will perform following operations with Person class.
- Convert Map<String,Person> to JSON String in java
- Convert JSON String to Map<String,Person> in java
Jackson objectMapper maven Dependencies
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.7.1</version>
</dependency>
Serialize or Convert Map to/from JSON in java (jackson objectmapper)
1.) Person Class:
- Person class containing attributes of Person.
package org.learn;
public class Person {
public String firstName;
public String lastName;
public int age;
public Person() {
}
public Person(String firstName, String lastName,
int age) {
this.firstName = firstName;
this.lastName = lastName;
this.age = age;
}
public String toString() {
return "[" + firstName + " " + lastName +
" " + age +"]";
}
}
2.) JSONMapConverter Class:
- Convert Map<String,Person> to JSON in java.
- Convert the JSON to Map<String,Person> in java.
package org.learn;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
public class JSONMapConverter
{
public static void main( String[] args ) throws IOException
{
ObjectMapper objectMapper = new ObjectMapper();
//Set pretty printing of json
objectMapper.enable(SerializationFeature.INDENT_OUTPUT);
//Define map which will be converted to JSON
Map<String,Person>mapIdPerson = new HashMap<>();
mapIdPerson.put("10101001", new Person("Mike", "harvey", 34));
mapIdPerson.put("20202002", new Person("Nick", "young", 75));
mapIdPerson.put("30303003", new Person("gary", "hudson", 21));
mapIdPerson.put("40404004", new Person("gary", "hudson", 55));
//1. Convert Map to JSON
String mapToJson = objectMapper.writeValueAsString(mapIdPerson);
System.out.println("1. Convert Map to JSON :");
System.out.println(mapToJson);
//2. JSON to Map
//Define Custom Type reference for map type
TypeReference<Map<String, Person>> mapType = new TypeReference<Map<String,Person>>() {};
Map<String,Person> jsonToMap = objectMapper.readValue(mapToJson, mapType);
System.out.println("\n2. Convert JSON to Map :");
//Print map output using Java 8
jsonToMap.forEach((k, v) ->
System.out.println(k + "=" + v));
}
}
Output – Serialize/convert Map to/from JSON in java (jackson objectmapper)
1. Convert Map to JSON :
{
"30303003" : {
"firstName" : "gary",
"lastName" : "hudson",
"age" : 21
},
"10101001" : {
"firstName" : "Mike",
"lastName" : "harvey",
"age" : 34
},
"20202002" : {
"firstName" : "Nick",
"lastName" : "young",
"age" : 75
},
"40404004" : {
"firstName" : "gary",
"lastName" : "hudson",
"age" : 55
}
}
2. Convert JSON to Map :
30303003=[gary hudson 21]
10101001=[Mike harvey 34]
20202002=[Nick young 75]
40404004=[gary hudson 55]