Android-GsonUtil工具类
Posted android-deli
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android-GsonUtil工具类相关的知识,希望对你有一定的参考价值。
JSON解析封装相关工具类
public class GsonUtil { private static Gson gson = null; static { if (gson == null) { gson = new Gson(); } } private GsonUtil() { } /** * 转成json * * @param object * @return */ public static String gsonString(Object object) { String gsonString = null; if (gson != null) { gsonString = gson.toJson(object); } return gsonString; } /** * 转成bean * * @param gsonString * @param cls * @return */ public static <T> T gsonToBean(String gsonString, Class<T> cls) { T t = null; if (gson != null) { t = gson.fromJson(gsonString, cls); } return t; } /** * 转成list * 泛型在编译期类型被擦除导致报错 * @param gsonString * @param cls * @return */ public static <T> List<T> gsonToList(String gsonString, Class<T> cls) { List<T> list = null; if (gson != null) { list = gson.fromJson(gsonString, new TypeToken<List<T>>() { }.getType()); } return list; } /** * 转成list * 解决泛型问题 * @param json * @param cls * @param <T> * @return */ public static <T> List<T> jsonToList(String json, Class<T> cls) { Gson gson = new Gson(); List<T> list = new ArrayList<T>(); JsonArray array = new JsonParser().parse(json).getAsJsonArray(); for(final JsonElement elem : array){ list.add(gson.fromJson(elem, cls)); } return list; } /** * 转成list中有map的 * * @param gsonString * @return */ public static <T> List<Map<String, T>> gsonToListMaps(String gsonString) { List<Map<String, T>> list = null; if (gson != null) { list = gson.fromJson(gsonString, new TypeToken<List<Map<String, T>>>() { }.getType()); } return list; } /** * 转成map的 * * @param gsonString * @return */ public static <T> Map<String, T> gsonToMaps(String gsonString) { Map<String, T> map = null; if (gson != null) { map = gson.fromJson(gsonString, new TypeToken<Map<String, T>>() { }.getType()); } return map; } // ------- /** * 按章节点得到相应的内容 * @param jsonString json字符串 * @param note 节点 * @return 节点对应的内容 */ public static String getNoteJsonString(String jsonString,String note){ if(TextUtils.isEmpty(jsonString)){ throw new RuntimeException("json字符串"); } if(TextUtils.isEmpty(note)){ throw new RuntimeException("note标签不能为空"); } JsonElement element = new JsonParser().parse(jsonString); if(element.isJsonNull()){ throw new RuntimeException("得到的jsonElement对象为空"); } return element.getAsJsonObject().get(note).toString(); } /** * 按照节点得到节点内容,然后传化为相对应的bean数组 * @param jsonString 原json字符串 * @param note 节点标签 * @param beanClazz 要转化成的bean class * @return 返回bean的数组 */ public static <T> List<T> parserJsonToArrayBeans(String jsonString,String note,Class<T> beanClazz){ String noteJsonString = getNoteJsonString(jsonString,note); return parserJsonToArrayBeans(noteJsonString,beanClazz); } /** * 按照节点得到节点内容,转化为一个数组 * @param jsonString json字符串 * @param beanClazz 集合里存入的数据对象 * @return 含有目标对象的集合 */ public static <T> List<T> parserJsonToArrayBeans(String jsonString,Class<T> beanClazz){ if(TextUtils.isEmpty(jsonString)){ throw new RuntimeException("json字符串为空"); } JsonElement jsonElement = new JsonParser().parse(jsonString); if(jsonElement.isJsonNull()){ throw new RuntimeException("得到的jsonElement对象为空"); } if(!jsonElement.isJsonArray()){ throw new RuntimeException("json字符不是一个数组对象集合"); } JsonArray jsonArray = jsonElement.getAsJsonArray(); List<T> beans = new ArrayList<T>(); for (JsonElement jsonElement2: jsonArray) { T bean = new Gson().fromJson(jsonElement2, beanClazz); beans.add(bean); } return beans; } /** * 把相对应节点的内容封装为对象 * @param jsonString json字符串 * @param clazzBean 要封装成的目标对象 * @return 目标对象 */ public static <T> T parserJsonToArrayBean(String jsonString,Class<T> clazzBean){ if(TextUtils.isEmpty(jsonString)){ throw new RuntimeException("json字符串为空"); } JsonElement jsonElement = new JsonParser().parse(jsonString); if(jsonElement.isJsonNull()){ throw new RuntimeException("json字符串为空"); } if(!jsonElement.isJsonObject()){ throw new RuntimeException("json不是一个对象"); } return new Gson().fromJson(jsonElement, clazzBean); } /** * 按照节点得到节点内容,转化为一个数组 * @param jsonString json字符串 * @param note json标签 * @param clazzBean 集合里存入的数据对象 * @return 含有目标对象的集合 */ public static <T> T parserJsonToArrayBean(String jsonString,String note,Class<T> clazzBean){ String noteJsonString = getNoteJsonString(jsonString, note); return parserJsonToArrayBean(noteJsonString, clazzBean); } /** * 把bean对象转化为json字符串 * @param obj bean对象 * @return 返回的是json字符串 */ public static String toJsonString(Object obj){ if(obj!=null){ return new Gson().toJson(obj); }else{ throw new RuntimeException("对象不能为空"); } } }
以上是关于Android-GsonUtil工具类的主要内容,如果未能解决你的问题,请参考以下文章