1. 程式人生 > >Android-GsonUtil-工具類

Android-GsonUtil-工具類

GsonUtil-工具類 是把Google提供的Gons進行了方法封裝,提供了關於一些常用的Gons使用的公共方法;

 

package common.library.utils;

import android.text.TextUtils;

import com.google.gson.Gson;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonParser;
import com.google.gson.reflect.TypeToken;

import java.util.ArrayList; import java.util.List; import java.util.Map; /** * @Author Liudeli * @Describe: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("物件不能為空"); } } }