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,?>> 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,?>> 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,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>(); JsonToHashMap((JSONObject) jsonarray.get(i),params); rstList.add(mapObj); continue; } } } catch (JSONException e) { e.printStackTrace(); } } public static void JsonToHashMap(String key,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,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"
}
]
}
=================================================================