将JsonObject转换成HashMap

发布时间:2019-10-11 发布网站:大佬教程
大佬教程收集整理的这篇文章主要介绍了将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,?>> 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"
}
]
}


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

大佬总结

以上是大佬教程为你收集整理的将JsonObject转换成HashMap全部内容,希望文章能够帮你解决将JsonObject转换成HashMap所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ群:277859234,请注明来意。