相关文章推荐
跑龙套的柚子  ·  Qubole Presto - Tableau·  1 年前    · 
时尚的企鹅  ·  c++ openssl https ...·  1 年前    · 
善良的红茶  ·  sql server - MS SQL ...·  1 年前    · 
Collectives™ on Stack Overflow

Find centralized, trusted content and collaborate around the technologies you use most.

Learn more about Collectives

Teams

Q&A for work

Connect and share knowledge within a single location that is structured and easy to search.

Learn more about Teams I don't know why json.org JSONObject does not have a getter for the private map member variable... vzamanillo Oct 1, 2014 at 10:03 But why is question asking about JSONObject when that seems to be superfluous type that is not needed at all? Reading JSON as Map is simple using any number of good Java JSON Libraries like Jackson, GSON, Genson, Moshi. So why does OP "want" to use org.json? StaxMan Feb 26, 2019 at 0:56 @staxMan, Due to the organization policy, sometimes you are bound to use the inbuilt libraries only. Hence, I had to use the org.json only. Vikas Gupta Feb 26, 2019 at 4:36

In recursive way:

public static Map<String, Object> jsonToMap(JSONObject json) throws JSONException {
    Map<String, Object> retMap = new HashMap<String, Object>();
    if(json != JSONObject.NULL) {
        retMap = toMap(json);
    return retMap;
public static Map<String, Object> toMap(JSONObject object) throws JSONException {
    Map<String, Object> map = new HashMap<String, Object>();
    Iterator<String> keysItr = object.keys();
    while(keysItr.hasNext()) {
        String key = keysItr.next();
        Object value = object.get(key);
        if(value instanceof JSONArray) {
            value = toList((JSONArray) value);
        else if(value instanceof JSONObject) {
            value = toMap((JSONObject) value);
        map.put(key, value);
    return map;
public static List<Object> toList(JSONArray array) throws JSONException {
    List<Object> list = new ArrayList<Object>();
    for(int i = 0; i < array.length(); i++) {
        Object value = array.get(i);
        if(value instanceof JSONArray) {
            value = toList((JSONArray) value);
        else if(value instanceof JSONObject) {
            value = toMap((JSONObject) value);
        list.add(value);
    return list;

Using Jackson library:

import com.fasterxml.jackson.databind.ObjectMapper;
Map<String, Object> mapping = new ObjectMapper().readValue(jsonStr, HashMap.class);
                You can safely catch those exceptions and throw runtime exceptions or assertions instead. You have already checked that the key exists and that the array has a value at the index that you check. Also, no sense in creating the retMap before checking for null as it is created twice when json != null. Looks good though.
– user1122069
                Mar 5, 2016 at 7:15
                what imports / external lib does this use? Eclipse can't dissolve JSONArray and JSONObject
– Gewure
                Jun 14, 2017 at 7:29
                There is a compile time error when Jackson Library is used as it is in the code.   It can be fixed like below :       TypeReference<HashMap<Integer, Object>> typeRef = new TypeReference<HashMap<Integer, Object>>() {     };     Map<Integer, Object> mapping = new ObjectMapper().readValue("", typeRef);
– Mahendra Bagul
                Jul 25, 2021 at 11:39

Using Gson, you can do the following:

Map<String, Object> retMap = new Gson().fromJson(
    jsonString, new TypeToken<HashMap<String, Object>>() {}.getType()
                how to read it into the jsonString? whats the difference between jsonString and json object?
– smatthewenglish
                Apr 28, 2015 at 4:16
                When using the Gson to convert string to hashmap<String, Object>, the integers are getting converted to Floats and this is creating a huge problem when using the converted Hashmap. If I use hashmap<String, Integer>, it works perfectly. But this is not my case. I have to use hashmap<String, Object>.
– Aman Verma
                May 23, 2020 at 18:26
import com.fasterxml.jackson.databind.ObjectMapper;
Map<String, Object> response = new ObjectMapper().readValue(str, HashMap.class);

str, your JSON String

As Simple as this, if you want emailid,

String emailIds = response.get("email id").toString();
                Chose this solution. Also handy, when your JSON string is meant to have complex data types like lists, as explained here
– mania_device
                Nov 13, 2018 at 12:06
                as I was using jackson library in my application beforehand, so this is the best answer to my problem. Thanks :)
– imans77
                Apr 9, 2020 at 16:49
                With this solution I am getting error - com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot construct instance of java.util.LinkedHashMap (although at least one Creator exists): no String-argument constructor/factory method to deserialize from String value ('{
– Disha Jain
                Sep 8, 2020 at 7:13
                In Kotlin, this looks like this:  val map = Gson().fromJson(json.toString(), HashMap<String, Object>().javaClass)
– Corbie
                May 17, 2022 at 7:47
import javax.json.JsonArray;
import javax.json.JsonException;
import javax.json.JsonObject;
public class JsonUtils {
    public static Map<String, Object> jsonToMap(JsonObject json) {
        Map<String, Object> retMap = new HashMap<String, Object>();
        if(json != JsonObject.NULL) {
            retMap = toMap(json);
        return retMap;
    public static Map<String, Object> toMap(JsonObject object) throws JsonException {
        Map<String, Object> map = new HashMap<String, Object>();
        Iterator<String> keysItr = object.keySet().iterator();
        while(keysItr.hasNext()) {
            String key = keysItr.next();
            Object value = object.get(key);
            if(value instanceof JsonArray) {
                value = toList((JsonArray) value);
            else if(value instanceof JsonObject) {
                value = toMap((JsonObject) value);
            map.put(key, value);
        return map;
    public static List<Object> toList(JsonArray array) {
        List<Object> list = new ArrayList<Object>();
        for(int i = 0; i < array.size(); i++) {
            Object value = array.get(i);
            if(value instanceof JsonArray) {
                value = toList((JsonArray) value);
            else if(value instanceof JsonObject) {
                value = toMap((JsonObject) value);
            list.add(value);
        return list;
                @sirvon Can you clarify?  The JSR 353 code doesn't have a "JSONObject".   I don't recommend that you mix JSON technologies.  Pick one or the other.
– Kolban
                Jan 31, 2015 at 23:38
                Note that the resulting Map still contains wrappers (e.g. JsonString instead of a plain String). I have posted an alternative solution here: stackoverflow.com/a/65634179/388827
– qqilihq
                Jan 8, 2021 at 18:07

Latest Update: I have used FasterXML Jackson Databind2.12.3 to Convert JSON string to Map, Map to JSON string.

// javax.ws.rs.core.Response clientresponse = null; // Read JSON with Jersey 2.0 (JAX-RS 2.0)
// String json_string = clientresponse.readEntity(String.class);
String json_string = "[\r\n"
        + "{\"domain\":\"stackoverflow.com\", \"userId\":5081877, \"userName\":\"Yash\"},\r\n"
        + "{\"domain\":\"stackoverflow.com\", \"userId\":6575754, \"userName\":\"Yash\"}\r\n"
        + "]";
System.out.println("Input/Response JSON string:"+json_string);
ObjectMapper mapper = new com.fasterxml.jackson.databind.ObjectMapper();
//java.util.Map<String, String> map = mapper.readValue(json_string, java.util.Map.class);
List<Map<String, Object>> listOfMaps = mapper.readValue(json_string, new com.fasterxml.jackson.core.type.TypeReference< List<Map<String, Object>>>() {});
System.out.println("fasterxml JSON string to List of Map:"+listOfMaps);
String json = mapper.writeValueAsString(listOfMaps);
System.out.println("fasterxml List of Map to JSON string:[compact-print]"+json);
json = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(listOfMaps);
System.out.println("fasterxml List of Map to JSON string:[pretty-print]"+json);

output:

Input/Response JSON string:[
{"domain":"stackoverflow.com", "userId":5081877, "userName":"Yash"},
{"domain":"stackoverflow.com", "userId":6575754, "userName":"Yash"}
fasterxml JSON string to List of Map:[{domain=stackoverflow.com, userId=5081877, userName=Yash}, {domain=stackoverflow.com, userId=6575754, userName=Yash}]
fasterxml List of Map to JSON string:[compact-print][{"domain":"stackoverflow.com","userId":5081877,"userName":"Yash"},{"domain":"stackoverflow.com","userId":6575754,"userName":"Yash"}]
fasterxml List of Map to JSON string:[pretty-print][ {
  "domain" : "stackoverflow.com",
  "userId" : 5081877,
  "userName" : "Yash"
  "domain" : "stackoverflow.com",
  "userId" : 6575754,
  "userName" : "Yash"

Converting a JSON String to Map

public static java.util.Map<String, Object> jsonString2Map( String jsonString ) throws org.json.JSONException {
    Map<String, Object> keys = new HashMap<String, Object>(); 
    org.json.JSONObject jsonObject = new org.json.JSONObject( jsonString ); // HashMap
    java.util.Iterator<?> keyset = jsonObject.keys(); // HM
    while (keyset.hasNext()) {
        String key =  (String) keyset.next();
        Object value = jsonObject.get(key);
        System.out.print("\n Key : "+key);
        if ( value instanceof org.json.JSONObject ) {
            System.out.println("Incomin value is of JSONObject : ");
            keys.put( key, jsonString2Map( value.toString() ));
        } else if ( value instanceof org.json.JSONArray) {
            org.json.JSONArray jsonArray = jsonObject.getJSONArray(key);
            //JSONArray jsonArray = new JSONArray(value.toString());
            keys.put( key, jsonArray2List( jsonArray ));
        } else {
            keyNode( value);
            keys.put( key, value );
    return keys;

Converting JSON Array to List

public static java.util.List<Object> jsonArray2List( org.json.JSONArray arrayOFKeys ) throws org.json.JSONException {
    System.out.println("Incoming value is of JSONArray : =========");
    java.util.List<Object> array2List = new java.util.ArrayList<Object>();
    for ( int i = 0; i < arrayOFKeys.length(); i++ )  {
        if ( arrayOFKeys.opt(i) instanceof org.json.JSONObject ) {
            Map<String, Object> subObj2Map = jsonString2Map(arrayOFKeys.opt(i).toString());
            array2List.add(subObj2Map);
        } else if ( arrayOFKeys.opt(i) instanceof org.json.JSONArray ) {
            java.util.List<Object> subarray2List = jsonArray2List((org.json.JSONArray) arrayOFKeys.opt(i));
            array2List.add(subarray2List);
        } else {
            keyNode( arrayOFKeys.opt(i) );
            array2List.add( arrayOFKeys.opt(i) );
    return array2List;
public static Object keyNode(Object o) {
    if (o instanceof String || o instanceof Character) return (String) o;
    else if (o instanceof Number) return (Number) o;
    else return o;

Display JSON of Any Format

public static void displayJSONMAP( Map<String, Object> allKeys ) throws Exception{
    Set<String> keyset = allKeys.keySet(); // HM$keyset
    if (! keyset.isEmpty()) {
        Iterator<String> keys = keyset.iterator(); // HM$keysIterator
        while (keys.hasNext()) {
            String key = keys.next();
            Object value = allKeys.get( key );
            if ( value instanceof Map ) {
                System.out.println("\n Object Key : "+key);
                    displayJSONMAP(jsonString2Map(value.toString()));
            }else if ( value instanceof List ) {
                System.out.println("\n Array Key : "+key);
                JSONArray jsonArray = new JSONArray(value.toString());
                jsonArray2List(jsonArray);
            }else {
                System.out.println("key : "+key+" value : "+value);

Google.gson to HashMap.

public static Map<String, Object> jsonToMap(JSONObject json) { Map<String, Object> retMap = new HashMap<String, Object>(); if(json != null) { retMap = toMap(json); return retMap; public static Map<String, Object> toMap(JSONObject object) { Map<String, Object> map = new HashMap<String, Object>(); Iterator<String> keysItr = object.keySet().iterator(); while(keysItr.hasNext()) { String key = keysItr.next(); Object value = object.get(key); if(value instanceof JSONArray) { value = toList((JSONArray) value); else if(value instanceof JSONObject) { value = toMap((JSONObject) value); map.put(key, value); return map; public static List<Object> toList(JSONArray array) { List<Object> list = new ArrayList<Object>(); for(int i = 0; i < array.size(); i++) { Object value = array.get(i); if(value instanceof JSONArray) { value = toList((JSONArray) value); else if(value instanceof JSONObject) { value = toMap((JSONObject) value); list.add(value); return list; It would be helpful if you added some explanation: how does your answer improve on other existing answers to this question – artem Aug 19, 2016 at 23:07 String key = (String) keys.next(); String value = jsonObject.getString(key); params.put(key, value); catch (Exception xx) xx.toString();

Convert using Jackson :

JSONObject obj = new JSONObject().put("abc", "pqr").put("xyz", 5);
Map<String, Object> map = new ObjectMapper().readValue(obj.toString(), new TypeReference<Map<String, Object>>() {});

You can convert any JSON to map by using Jackson library as below:

String json = "{\r\n\"name\" : \"abc\" ,\r\n\"email id \" : [\"abc@gmail.com\",\"def@gmail.com\",\"ghi@gmail.com\"]\r\n}";
ObjectMapper mapper = new ObjectMapper();
Map<String, Object> map = new HashMap<String, Object>();
// convert JSON string to Map
map = mapper.readValue(json, new TypeReference<Map<String, Object>>() {});
System.out.println(map);

Maven Dependencies for Jackson :

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-core</artifactId>
    <version>2.5.3</version>
    <scope>compile</scope>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.5.3</version>
    <scope>compile</scope>
</dependency>

Hope this will help. Happy coding :)

    final String json = "....your json...";
    final ObjectMapper mapper = new ObjectMapper();
    final MapType type = mapper.getTypeFactory().constructMapType(
        Map.class, String.class, Object.class);
    final Map<String, Object> data = mapper.readValue(json, type);

If you hate recursion - using a Stack and javax.json to convert a Json String into a List of Maps:

import java.io.InputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Stack;
import javax.json.Json;
import javax.json.stream.JsonParser;
public class TestCreateObjFromJson {
    public static List<Map<String,Object>> extract(InputStream is) {
        List extracted = new ArrayList<>();
        JsonParser parser = Json.createParser(is);
        String nextKey = "";
        Object nextval = "";
        Stack s = new Stack<>();
        while(parser.hasNext()) {
            JsonParser.Event event = parser.next();
            switch(event) {
                case START_ARRAY :  List nextList = new ArrayList<>();
                                    if(!s.empty()) {
                                        // If this is not the root object, add it to tbe parent object
                                        setValue(s,nextKey,nextList);
                                    s.push(nextList);
                                    break;
                case START_OBJECT : Map<String,Object> nextMap = new HashMap<>();
                                    if(!s.empty()) {
                                        // If this is not the root object, add it to tbe parent object
                                        setValue(s,nextKey,nextMap);
                                    s.push(nextMap);
                                    break;
                case KEY_NAME : nextKey = parser.getString();
                                break;
                case VALUE_STRING : setValue(s,nextKey,parser.getString());
                                    break;
                case VALUE_NUMBER : setValue(s,nextKey,parser.getLong());
                                    break;
                case VALUE_TRUE :   setValue(s,nextKey,true);
                                    break;
                case VALUE_FALSE :  setValue(s,nextKey,false);
                                    break;
                case VALUE_NULL :   setValue(s,nextKey,"");
                                    break;
                case END_OBJECT :   
                case END_ARRAY  :   if(s.size() > 1) {
                                        // If this is not a root object, move up
                                        s.pop(); 
                                    } else {
                                        // If this is a root object, add ir ro rhw final 
                                        extracted.add(s.pop()); 
                default         :   break;
        return extracted;
    private static void setValue(Stack s, String nextKey, Object v) {
        if(Map.class.isAssignableFrom(s.peek().getClass()) ) ((Map)s.peek()).put(nextKey, v);
        else ((List)s.peek()).add(v);

There’s an older answer using javax.json posted here, however it only converts JsonArray and JsonObject, but there are still JsonString, JsonNumber, and JsonValue wrapper classes in the output. If you want to get rid of these, here’s my solution which will unwrap everything.

Beside that, it makes use of Java 8 streams and is contained in a single method.

* Convert a JsonValue into a “plain” Java structure (using Map and List). * @param value The JsonValue, not <code>null</code>. * @return Map, List, String, Number, Boolean, or <code>null</code>. public static Object toObject(JsonValue value) { Objects.requireNonNull(value, "value was null"); switch (value.getValueType()) { case ARRAY: return ((JsonArray) value) .stream() .map(JsonUtils::toObject) .collect(Collectors.toList()); case OBJECT: return ((JsonObject) value) .entrySet() .stream() .collect(Collectors.toMap( Entry::getKey, e -> toObject(e.getValue()))); case STRING: return ((JsonString) value).getString(); case NUMBER: return ((JsonNumber) value).numberValue(); case TRUE: return Boolean.TRUE; case FALSE: return Boolean.FALSE; case NULL: return null; default: throw new IllegalArgumentException("Unexpected type: " + value.getValueType());

You can use google gson library to convert json object.

https://code.google.com/p/google-gson/

Other librarys like Jackson are also available.

This won't convert it to a map. But you can do all things which you want.

* @param jsonThing can be a <code>JsonObject</code>, a <code>JsonArray</code>, * a <code>Boolean</code>, a <code>Number</code>, * a <code>null</code> or a <code>JSONObject.NULL</code>. * @return <i>Appropriate Java Object</i>, that may be a <code>Map</code>, a <code>List</code>, * a <code>Boolean</code>, a <code>Number</code> or a <code>null</code>. public static Object jsonThingToAppropriateJavaObject(Object jsonThing) throws JSONException { if (jsonThing instanceof JSONArray) { final ArrayList<Object> list = new ArrayList<>(); final JSONArray jsonArray = (JSONArray) jsonThing; final int l = jsonArray.length(); for (int i = 0; i < l; ++i) list.add(jsonThingToAppropriateJavaObject(jsonArray.get(i))); return list; if (jsonThing instanceof JSONObject) { final HashMap<String, Object> map = new HashMap<>(); final Iterator<String> keysItr = ((JSONObject) jsonThing).keys(); while (keysItr.hasNext()) { final String key = keysItr.next(); map.put(key, jsonThingToAppropriateJavaObject(((JSONObject) jsonThing).get(key))); return map; if (JSONObject.NULL.equals(jsonThing)) return null; return jsonThing;

The following parser reads a file, parses it into a generic JsonElement, using Google's JsonParser.parse method, and then converts all the items in the generated JSON into a native Java List<object> or Map<String, Object>.

Note: The code below is based off of Vikas Gupta's answer.

GsonParser.java

import java.io.FileNotFoundException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import com.google.gson.JsonPrimitive;
public class GsonParser {
    public static void main(String[] args) {
        try {
            print(loadJsonArray("data_array.json", true));
            print(loadJsonObject("data_object.json", true));
        } catch (Exception e) {
            e.printStackTrace();
    public static void print(Object object) {
        System.out.println(new GsonBuilder().setPrettyPrinting().create().toJson(object).toString());
    public static Map<String, Object> loadJsonObject(String filename, boolean isResource)
            throws UnsupportedEncodingException, FileNotFoundException, JsonIOException, JsonSyntaxException, MalformedURLException {
        return jsonToMap(loadJson(filename, isResource).getAsJsonObject());
    public static List<Object> loadJsonArray(String filename, boolean isResource)
            throws UnsupportedEncodingException, FileNotFoundException, JsonIOException, JsonSyntaxException, MalformedURLException {
        return jsonToList(loadJson(filename, isResource).getAsJsonArray());
    private static JsonElement loadJson(String filename, boolean isResource) throws UnsupportedEncodingException, FileNotFoundException, JsonIOException, JsonSyntaxException, MalformedURLException {
        return new JsonParser().parse(new InputStreamReader(FileLoader.openInputStream(filename, isResource), "UTF-8"));
    public static Object parse(JsonElement json) {
        if (json.isJsonObject()) {
            return jsonToMap((JsonObject) json);
        } else if (json.isJsonArray()) {
            return jsonToList((JsonArray) json);
        return null;
    public static Map<String, Object> jsonToMap(JsonObject jsonObject) {
        if (jsonObject.isJsonNull()) {
            return new HashMap<String, Object>();
        return toMap(jsonObject);
    public static List<Object> jsonToList(JsonArray jsonArray) {
        if (jsonArray.isJsonNull()) {
            return new ArrayList<Object>();
        return toList(jsonArray);
    private static final Map<String, Object> toMap(JsonObject object) {
        Map<String, Object> map = new HashMap<String, Object>();
        for (Entry<String, JsonElement> pair : object.entrySet()) {
            map.put(pair.getKey(), toValue(pair.getValue()));
        return map;
    private static final List<Object> toList(JsonArray array) {
        List<Object> list = new ArrayList<Object>();
        for (JsonElement element : array) {
            list.add(toValue(element));
        return list;
    private static final Object toPrimitive(JsonPrimitive value) {
        if (value.isBoolean()) {
            return value.getAsBoolean();
        } else if (value.isString()) {
            return value.getAsString();
        } else if (value.isNumber()){
            return value.getAsNumber();
        return null;
    private static final Object toValue(JsonElement value) {
        if (value.isJsonNull()) {
            return null;
        } else if (value.isJsonArray()) {
            return toList((JsonArray) value);
        } else if (value.isJsonObject()) {
            return toMap((JsonObject) value);
        } else if (value.isJsonPrimitive()) {
            return toPrimitive((JsonPrimitive) value);
        return null;

FileLoader.java

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.io.UnsupportedEncodingException;
import java.net.MalformedURLException;
import java.net.URISyntaxException;
import java.net.URL;
import java.util.Scanner;
public class FileLoader {
    public static Reader openReader(String filename, boolean isResource) throws UnsupportedEncodingException, FileNotFoundException, MalformedURLException {
        return openReader(filename, isResource, "UTF-8");
    public static Reader openReader(String filename, boolean isResource, String charset) throws UnsupportedEncodingException, FileNotFoundException, MalformedURLException {
        return new InputStreamReader(openInputStream(filename, isResource), charset);
    public static InputStream openInputStream(String filename, boolean isResource) throws FileNotFoundException, MalformedURLException {
        if (isResource) {
            return FileLoader.class.getClassLoader().getResourceAsStream(filename);
        return new FileInputStream(load(filename, isResource));
    public static String read(String path, boolean isResource) throws IOException {
        return read(path, isResource, "UTF-8");
    public static String read(String path, boolean isResource, String charset) throws IOException {
        return read(pathToUrl(path, isResource), charset);
    @SuppressWarnings("resource")
    protected static String read(URL url, String charset) throws IOException {
        return new Scanner(url.openStream(), charset).useDelimiter("\\A").next();
    protected static File load(String path, boolean isResource) throws MalformedURLException {
        return load(pathToUrl(path, isResource));
    protected static File load(URL url) {
        try {
            return new File(url.toURI());
        } catch (URISyntaxException e) {
            return new File(url.getPath());
    private static final URL pathToUrl(String path, boolean isResource) throws MalformedURLException {
        if (isResource) {
            return FileLoader.class.getClassLoader().getResource(path);
        return new URL("file:/" + path);

If you want no-lib version, here is the solution with regex:

public static HashMap<String, String> jsonStringToMap(String inputJsonString) {
    final String regex = "(?:\\\"|\\')(?<key>[\\w\\d]+)(?:\\\"|\\')(?:\\:\\s*)(?:\\\"|\\')?(?<value>[\\w\\s-]*)(?:\\\"|\\')?";
    HashMap<String, String> map = new HashMap<>();
    final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE);
    final Matcher matcher = pattern.matcher(inputJsonString);
    while (matcher.find()) {
        for (int i = 1; i <= matcher.groupCount(); i++) {
            map.put(matcher.group("key"), matcher.group("value"));
    return map;

Imagine u have a list of email like below. not constrained to any programming language,

emailsList = ["abc@gmail.com","def@gmail.com","ghi@gmail.com"]

Now following is JAVA code - for converting json to map

JSONObject jsonObj = new JSONObject().put("name","abc").put("email id",emailsList);
Map<String, Object> s = jsonObj.getMap();
                Which version of Java(6/7/8/9)? Which Edition(SE/EE/Other)? Which package does JSONObject of your code belongs to?
– Abhishek Oza
                Jun 8, 2018 at 13:04

This is an old question and maybe still relate to someone.
Let's say you have string HashMap hash and JsonObject jsonObject.

1) Define key-list.
Example:

ArrayList<String> keyArrayList = new ArrayList<>();  
keyArrayList.add("key0");   
keyArrayList.add("key1");  

2) Create foreach loop, add hash from jsonObject with:

for(String key : keyArrayList){  
    hash.put(key, jsonObject.getString(key));

That's my approach, hope it answer the question.

Thanks for contributing an answer to Stack Overflow!

  • Please be sure to answer the question. Provide details and share your research!

But avoid

  • Asking for help, clarification, or responding to other answers.
  • Making statements based on opinion; back them up with references or personal experience.

To learn more, see our tips on writing great answers.