将JsonObject转换成HashMap
Posted 西西弗斯丶
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将JsonObject转换成HashMap相关的知识,希望对你有一定的参考价值。
1.工具类:
Utils.class:(1)简单的键值对map
public class Utils
public static String getRaw(Context context, int RawId)
try
InputStream is = context.getResources().openRawResource(RawId);
BufferedReader reader = new BufferedReader(
new InputStreamReader(is));
// StringBuffer线程安全;StringBuilder线程不安全
StringBuffer sb = new StringBuffer();
for (String str = null; (str = reader.readLine()) != null;)
sb.append(str);
return sb.toString();
catch (IOException e)
e.printStackTrace();
return null;
public static String getAsset(Context context, String fileName)
try
InputStream is = context.getResources().getAssets().open(fileName);
// StringBuffer线程安全;StringBuilder线程不安全
BufferedReader reader = new BufferedReader(
new InputStreamReader(is));
StringBuffer sb = new StringBuffer();
for (String str = null; (str = reader.readLine()) != null;)
sb.append(str);
return sb.toString();
catch (IOException e)
e.printStackTrace();
return null;
public static void JsonObject2HashMap(JSONObject jo, List<Map<?, ?>> rstList)
for (Iterator<String> keys = jo.keys(); keys.hasNext();)
try
String key1 = keys.next();
System.out.println("key1---" + key1 + "------" + jo.get(key1)
+ (jo.get(key1) instanceof JSONObject) + jo.get(key1)
+ (jo.get(key1) instanceof JSONArray));
if (jo.get(key1) instanceof JSONObject)
JsonObject2HashMap((JSONObject) jo.get(key1), rstList);
continue;
if (jo.get(key1) instanceof JSONArray)
JsonArray2HashMap((JSONArray) jo.get(key1), rstList);
continue;
System.out.println("key1:" + key1 + "----------jo.get(key1):"
+ jo.get(key1));
json2HashMap(key1, jo.get(key1), rstList);
catch (JSONException e)
e.printStackTrace();
public static void JsonArray2HashMap(JSONArray joArr,
List<Map<?, ?>> rstList)
for (int i = 0; i < joArr.length(); i++)
try
if (joArr.get(i) instanceof JSONObject)
JsonObject2HashMap((JSONObject) joArr.get(i), rstList);
continue;
if (joArr.get(i) instanceof JSONArray)
JsonArray2HashMap((JSONArray) joArr.get(i), rstList);
continue;
System.out.println("Excepton~~~~~");
catch (JSONException e)
e.printStackTrace();
public static void json2HashMap(String key, Object value,
List<Map<?, ?>> rstList)
HashMap<String, Object> map = new HashMap<String, Object>();
map.put(key, value);
rstList.add(map);
(2)完全Map深层嵌套模式形式:
/**
* @param jsonData
* @param rstList
* @param params
* @func hashmap追加字段
*/
public static void JsonToHashMap(JSONObject jsonData, Map<String, Object> rstList,
String... params)
try
for (Iterator<String> keyStr = jsonData.keys(); keyStr.hasNext();)
String key1 = keyStr.next().trim();
if (jsonData.get(key1) instanceof JSONObject)
HashMap<String, Object> mapObj = new HashMap<String, Object>();
JsonToHashMap((JSONObject) jsonData.get(key1), mapObj, params);
rstList.put(key1, mapObj);
continue;
if (jsonData.get(key1) instanceof JSONArray)
ArrayList<Map<String, Object>> arrayList = new ArrayList<Map<String, Object>>();
JsonToHashMap((JSONArray) jsonData.get(key1), arrayList, params);
rstList.put(key1, arrayList);
continue;
JsonToHashMap(key1, jsonData.get(key1), rstList);
// 追加字段
if (params != null && params.length == 2)
rstList.put(params[0], params[1]);
if (params != null && params.length == 4)
rstList.put(params[0], params[1]);
rstList.put(params[2], params[3]);
catch (JSONException e)
e.printStackTrace();
public static void JsonToHashMap(JSONArray jsonarray, List<Map<String, Object>> rstList,
String... params)
try
for (int i = 0; i < jsonarray.length(); i++)
if (jsonarray.get(i) instanceof JSONObject)
HashMap<String, Object> mapObj = new HashMap<String, Object>();
JsonToHashMap((JSONObject) jsonarray.get(i), mapObj, params);
rstList.add(mapObj);
continue;
catch (JSONException e)
e.printStackTrace();
public static void JsonToHashMap(String key, Object value, Map<String, Object> rstList)
key = BBSUtils.replaceBlank(key);
if (value instanceof String)
rstList.put(key, BBSUtils.replaceBlank((String) value));
return;
rstList.put(key, value);
public static String getRaw(Context context, int RawId)
try
InputStream is = context.getResources().openRawResource(RawId);
BufferedReader reader = new BufferedReader(
new InputStreamReader(is));
// StringBuffer线程安全;StringBuilder线程不安全
StringBuffer sb = new StringBuffer();
for (String str = null; (str = reader.readLine()) != null;)
sb.append(str);
return sb.toString();
catch (IOException e)
e.printStackTrace();
return null;
public static String getAsset(Context context, String fileName)
try
InputStream is = context.getResources().getAssets().open(fileName);
// StringBuffer线程安全;StringBuilder线程不安全
BufferedReader reader = new BufferedReader(
new InputStreamReader(is));
StringBuffer sb = new StringBuffer();
for (String str = reader.readLine(); str != null;)
sb.append(str);
return sb.toString();
catch (IOException e)
e.printStackTrace();
return null;
备注:
JsonObject里面有两种情况:(1)JsonObject (2)JsonArray
JsonArray 后面有三种情况:(1)JsonObject (2)JsonArray (3)Object
====================================================
2.调用类:
String jsonStr = Utils.getRaw(mContext, R.raw.file1);
String temp = "\\"\\":[\\"aa\\":\\"1\\",\\"bb\\":\\"2\\",\\"aa\\":\\"3\\",\\"bb\\":\\"4\\",\\"aa\\":\\"5\\",\\"bb\\":\\"6\\"]";
System.out.println("---------jsonStr" + jsonStr);
ArrayList<Map<?, ?>> rstList = new ArrayList<Map<?, ?>>();
try
Utils.JsonObject2HashMap(new JSONObject(jsonStr), rstList);
Utils.JsonObject2HashMap(new JSONObject(temp), rstList);
System.out.println("---------rstList" + rstList);
catch (JSONException e)
e.printStackTrace();
3.Raw文件夹下文本文件file1:
"programmers": [
"firstName": "Brett",
"lastName": "McLaughlin"
,
"firstName": "Jason",
"lastName": "Hunter"
],
"authors": [
"firstName": "Isaac",
"lastName": "Asimov"
,
"firstName": "Tad",
"lastName": "Williams"
]
=================================================================
以上是关于将JsonObject转换成HashMap的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 ResponseEntity 返回 JSONObject 而不是 HashMap? (未找到类型返回值的转换器:类 org.json.JSONObject)