Converting Objects from one form to another is a common request. There are 4 different ways
to convert Java Map/HashMap to JSONObject.
We will go over details on how to convert HashMap to JSONObject in this tutorial.
Let’s get started:
Create class CrunchifyMapToJsonObject.java.
Method-1
Firstly we use Google GSON dependency
to convert HashMap to JSONObject. You need below Maven dependency in your project.
<dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.8.0</version> </dependency>
Method-2
Next we will use org.json dependency
using new JSONObject().
<dependency> <groupId>org.json</groupId> <artifactId>json</artifactId> <version>20180130</version> </dependency>
Method-3
Using jackson-core dependency
with ObjectMapper().writeValueAsString() operation.
<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> <version>2.9.5</version> <scope>compile</scope> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.9.5</version> <scope>compile</scope> </dependency>
Method-4
Using json-simple dependency
with JSONValue.toJSONString() library.
<dependency> <groupId>com.googlecode.json-simple</groupId> <artifactId>json-simple</artifactId> <version>1.1.1</version> </dependency>
Make sure to add all above maven dependencies to your Java J2EE project. If you don’t have maven project then follow these steps.
Here is a complete example:
package crunchify.com.tutorial; import java.util.HashMap; import java.util.Map; import org.json.JSONObject; import org.json.simple.JSONValue; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.google.gson.Gson; import com.google.gson.GsonBuilder; /** * @author Crunchify.com * Program: 4 Best ways to convert Java Map to JSONObject. * Version: 1.0.0 * */ public class CrunchifyMapToJsonObject { public static void main(String a[]) { Map<String, String> crunchifyMap = new HashMap<String, String>(); crunchifyMap.put("Google", "San Jose"); crunchifyMap.put("Facebook", "Mountain View"); crunchifyMap.put("Crunchify", "NYC"); crunchifyMap.put("Twitter", "SFO"); crunchifyMap.put("Microsoft", "Seattle"); log("Raw Map ===> " + crunchifyMap); // Use this builder to construct a Gson instance when you need to set configuration options other than the default. GsonBuilder gsonMapBuilder = new GsonBuilder(); Gson gsonObject = gsonMapBuilder.create(); String JSONObject = gsonObject.toJson(crunchifyMap); log("\nMethod-1: Using Google GSON ==> " + JSONObject); Gson prettyGson = new GsonBuilder().setPrettyPrinting().create(); String prettyJson = prettyGson.toJson(crunchifyMap); log("\nPretty JSONObject ==> " + prettyJson); // Construct a JSONObject from a Map. JSONObject crunchifyObject = new JSONObject(crunchifyMap); log("\nMethod-2: Using new JSONObject() ==> " + crunchifyObject); try { // Default constructor, which will construct the default JsonFactory as necessary, use SerializerProvider as its // SerializerProvider, and BeanSerializerFactory as its SerializerFactory. String objectMapper = new ObjectMapper().writeValueAsString(crunchifyMap); log("\nMethod-3: Using ObjectMapper().writeValueAsString() ==> " + objectMapper); } catch (JsonProcessingException e) { e.printStackTrace(); } // Convert an object to JSON text. If this object is a Map or a List, and it's also a JSONAware, JSONAware will be considered firstly. String jsonValue = JSONValue.toJSONString(crunchifyMap); log("\nMethod-4: Using JSONValue.toJSONString() ==> " + jsonValue); } private static void log(Object print) { System.out.println(print); } }
Just run above Program as Java Application and you should see below output.
Raw Map ===> {Google=San Jose, Twitter=SFO, Microsoft=Seattle, Facebook=Mountain View, Crunchify=NYC} Method-1: Using Google GSON ==> {"Google":"San Jose","Twitter":"SFO","Microsoft":"Seattle","Facebook":"Mountain View","Crunchify":"NYC"} Pretty JSONObject ==> { "Google": "San Jose", "Twitter": "SFO", "Microsoft": "Seattle", "Facebook": "Mountain View", "Crunchify": "NYC" } Method-2: Using new JSONObject() ==> {"Google":"San Jose","Twitter":"SFO","Microsoft":"Seattle","Facebook":"Mountain View","Crunchify":"NYC"} Method-3: Using ObjectMapper().writeValueAsString() ==> {"Google":"San Jose","Twitter":"SFO","Microsoft":"Seattle","Facebook":"Mountain View","Crunchify":"NYC"} Method-4: Using JSONValue.toJSONString() ==> {"Google":"San Jose","Twitter":"SFO","Microsoft":"Seattle","Facebook":"Mountain View","Crunchify":"NYC"}
If you know any other way to convert Java Map to JSONObject then please let us and all readers know by comment below.
Happy coding.