- 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]