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

 

=================================================================

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM