- Given the Map of String and object (Map<String,Object>), we would like to convert Map to JSON and vice versa.
- We will use the Google gson library to achieve serialization and deserialization process.
- We will create Person class and we will perform the following operations with Person class
- Convert Map<String,Person> to JSON string
- Convert the JSON string to Map<String,Person>
GSON Maven dependency:
<dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.5</version> </dependency>
Program – convert Map <k,v> to/from JSON in java(GSON /example)
1.) Person Class:
- Person class containing firstName, lastName, age etc.
- We have overloaded toString method to print person information.
package org.learn.gson;
public class Person {
public String firstName;
public String lastName;
public int age;
public String contact;
public Person(String firstName, String lastName, int age, String contact) {
this.firstName = firstName;
this.lastName = lastName;
this.age = age;
this.contact = contact;
}
public String toString() {
return "[" + firstName + " " + lastName + " " + age + " " + contact + "]";
}
}
2.) JSONMapConverter Class:
JSONMapConverter is responsible for performing following operations.
- Convert Map<String,Person> to JSON string in java.
- Convert the JSON string to Map<String,Person> in java.
package org.learn.gson;
import java.lang.reflect.Type;
import java.util.HashMap;
import java.util.Map;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.reflect.TypeToken;
public class JSONMapConverter {
public static void main(String[] args) {
Gson objGson = new GsonBuilder().setPrettyPrinting().create();
Map<String, Person> mapIdPerson = new HashMap<>();
mapIdPerson.put("10101001", new Person("Mike", "harvey", 34, "001894536"));
mapIdPerson.put("20202002", new Person("Nick", "young", 75, "005425676"));
mapIdPerson.put("30303003", new Person("gary", "hudson", 21, "009654153"));
mapIdPerson.put("40404004", new Person("gary", "hudson", 55, "00564536"));
Type listType = new TypeToken<Map<String, Person>>() {
}.getType();
String mapToJson = objGson.toJson(mapIdPerson);
System.out.println("1. Map to JSON conversion is : \n");
System.out.println(mapToJson);
// JSON to Map
Map<String, Person> jsonToMap = objGson.fromJson(mapToJson, listType);
System.out.println("2. JSON to Map conversion is :\n");
jsonToMap.forEach((k, v) -> System.out.println(k + "=" + v));
}
}
Download Code – Convert Map to JSON Java (GSON /Example)
Output – convert Map <k,v> to/from JSON in java (GSON /example)
1. Map to JSON conversion is :
{
"30303003": {
"firstName": "gary",
"lastName": "hudson",
"age": 21,
"contact": "009654153"
},
"10101001": {
"firstName": "Mike",
"lastName": "harvey",
"age": 34,
"contact": "001894536"
},
"20202002": {
"firstName": "Nick",
"lastName": "young",
"age": 75,
"contact": "005425676"
},
"40404004": {
"firstName": "gary",
"lastName": "hudson",
"age": 55,
"contact": "00564536"
}
}
2. JSON to Map conversion is :
30303003=[gary hudson 21 009654153]
10101001=[Mike harvey 34 001894536]
20202002=[Nick young 75 005425676]
40404004=[gary hudson 55 00564536]