将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"
}
]
}
=================================================================