龙空技术网

android 中使用gson实现json解析的工具类

jianjianpp 113

前言:

此刻姐妹们对“jsjson转map”大概比较注意,小伙伴们都需要分析一些“jsjson转map”的相关文章。那么小编也在网络上汇集了一些对于“jsjson转map””的相关内容,希望姐妹们能喜欢,朋友们一起来学习一下吧!

1.如果使用gson我们首先要导入gson的依赖:

implementation 'com.google.code.gson:gson:2.8.6'

2.工具类实现:JsonUtil

package com.antbyte.collectionorder.utils.data; import android.text.TextUtils; import com.google.gson.Gson;import com.google.gson.GsonBuilder;import com.google.gson.JsonElement;import com.google.gson.JsonParser;import com.google.gson.reflect.TypeToken; import org.json.JSONException;import org.json.JSONObject; import java.lang.reflect.Type;import java.util.HashMap;import java.util.List;import java.util.Map; public class JsonUtil { 	private static Gson gson = new Gson();	/**	 * 把一个map变成json字符串	 * @param map	 * @return	 */	public static String parseMapToJson(Map<?, ?> map) {		try {			return gson.toJson(map);		} catch (Exception e) {		}		return null;	} 	/**	 * 把一个json字符串变成对象	 * @param json	 * @param cls	 * @return	 */	public static <T> T parseJsonToBean(String json, Class<T> cls) {		T t = null;		try {			t = gson.fromJson(json, cls);		} catch (Exception e) { 		}		return t;	} 	/**	 *	 * @param json	 * @param jsonType  new TypeToken<BaseResultBean<ResultBean2>>() {}.getType()	 * @param <T>	 * @return	 */	public static <T> T parseJsonToBean1(String json,Type  jsonType){		return new Gson().fromJson(json, jsonType); 	} 	/**	 * list转json	 * @param list	 * @param <T>	 * @return	 */	public static<T> String listToJson(List<T> list){		String s = null;		try {			s = gson.toJson(list);		}catch (Exception e){ 		}		return s;	} 	/**	 * 把json字符串变成map	 * @param json	 * @return	 */	public static HashMap<String, Object> parseJsonToMap(String json) {		Type type = new TypeToken<HashMap<String, Object>>() {		}.getType();		HashMap<String, Object> map = null;		try {			map = gson.fromJson(json, type);		} catch (Exception e) {		}		return map;	} 	/**	 * 把json字符串变成集合	 * params: new TypeToken<List<yourbean>>(){}.getType(),	 * 	 * @param json	 * @param type  new TypeToken<List<yourbean>>(){}.getType()	 * @return	 */	public static List<?> parseJsonToList(String json, Type type) {		List<?> list = gson.fromJson(json, type);		return list;	} 	/**	 * 	 * 获取json串中某个字段的值,注意,只能获取同一层级的value	 * 	 * @param json	 * @param key	 * @return	 */	public static String getFieldValue(String json, String key) {		if (TextUtils.isEmpty(json))			return null;		if (!json.contains(key))			return "";		JSONObject jsonObject = null;		String value = null;		try {			jsonObject = new JSONObject(json);			value = jsonObject.getString(key);		} catch (JSONException e) {			e.printStackTrace();		}		return value;	} 	/**	 * 格式化json	 * @param uglyJSONString	 * @return     */	public static String jsonFormatter(String uglyJSONString){		Gson gson = new GsonBuilder().setPrettyPrinting().create();		JsonParser jp = new JsonParser();		JsonElement je = jp.parse(uglyJSONString);		String prettyJsonString = gson.toJson(je);		return prettyJsonString;	} }

3.平时用到的主要是json数据转实体类parseJsonToBean和parseJsonToList

使用示例:

UserBean userBean= JsonUtil.parseJsonToBean(result, UserBean.class);
 List<UserBean> userList = (List<UserBean>) JsonUtil.parseJsonToList(data, new TypeToken<List<UserBean>>() {}.getType());

标签: #jsjson转map