import java.util.ArrayList; import java.util.List; import java.util.Map; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.JsonArray; import com.google.gson.JsonElement; import com.google.gson.JsonParser; import com.google.gson.reflect.TypeToken; public class GsonUtil { //不用創建對象,直接使用Gson.就可以調用方法 private static Gson gson = null; //判斷gson對象是否存在了,不存在則創建對象 static { if (gson == null) { //gson = new Gson();
//當使用GsonBuilder方式時屬性為空的時候輸出來的json字符串是有鍵值key的,顯示形式是"key":null,而直接new出來的就沒有"key":null的 gson= new GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm:ss").create(); } } //無參的私有構造方法 private GsonUtil() { } /** * 將對象轉成json格式 * * @param object * @return String */ public static String GsonString(Object object) { String gsonString = null; if (gson != null) { gsonString = gson.toJson(object); } return gsonString; } /** * 將json轉成特定的cls的對象 * * @param gsonString * @param cls * @return */ public static <T> T GsonToBean(String gsonString, Class<T> cls) { T t = null; if (gson != null) { //傳入json對象和對象類型,將json轉成對象 t = gson.fromJson(gsonString, cls); } return t; } /** * json字符串轉成list * * @param gsonString * @param cls * @return */ public static <T> List<T> GsonToList(String gsonString, Class<T> cls) { List<T> list = null; if (gson != null) { //根據泛型返回解析指定的類型,TypeToken<List<T>>{}.getType()獲取返回類型 list = gson.fromJson(gsonString, new TypeToken<List<T>>() { }.getType()); } return list; }
/** * json字符串轉成list * * @param gsonString * @param cls * @return */
public static <T> List<T> jsonToList(String json, Class<T> cls) {
ArrayList<T> mList = new ArrayList<T>();
JsonArray array = new JsonParser().parse(json).getAsJsonArray(); for(final JsonElement elem : array){ mList.add(gson.fromJson(elem, cls)); } return mList;
}
/** * json字符串轉成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; } /** * json字符串轉成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; }
}
Gson 是 Google 提供的用來在 Java 對象和 JSON 數據之間進行映射的 Java 類庫。可以將一個 JSON 字符串轉成一個 Java 對象(反序列化),也可以將一個Java對象轉成JSON字符串(序列化)。
除了Java對象外,還可以對其他數據類型進行序列化和反序列化。
注意: GsonToList這個方法返回值:
可以使用jsonToList代替實現,返回的是正常的List
Java對象和JSON之間轉化可以參考:Gson詳細使用,此Gson非彼Json,你值得擁有~