目录
详解请看:https://blog.csdn.net/jinmie0193/article/details/86676814
序列化泛型List或泛型Map代码
/**
* obj -> json
*
* @param object 序列化对象
* @return json
*/
public String toJson(Object object) {
return mGson.toJson(object);
}
反序列化泛型List
/**
* @param json list的序列化字符串
* @param <T> T类型
* @return List<T>
*/
public <T> List<T> toList(String json, Class<T> clazz) {
return mGson.fromJson(json, TypeToken.getParameterized(List.class, clazz).getType());
}
// 或者
/**
* @param json list的序列化字符串
* @param <T> T类型
* @return List<T>
*/
public <T> List<T> parseList(String json, Class<T> clazz) {
List<T> list = new ArrayList<>();
try {
JsonArray array = new JsonParser().parse(json).getAsJsonArray();
for (final JsonElement elem : array) {
list.add(new Gson().fromJson(elem, clazz));
}
} catch (Exception e) {
return null;
}
return list;
}
反序列化泛型Map
/**
* @param json map的序列化结果
* @param <K> k类型
* @param <V> v类型
* @return Map<K , V>
*/
public <K, V> Map<K, V> toMap(String json, Class<K> kClazz, Class<V> vClazz) {
return mGson.fromJson(json, TypeToken.getParameterized(Map.class, kClazz, vClazz).getType());
}
// 或者
/**
* @param json map的序列化字符串
* @param <V> value类型
* @return Map<String,V>
*/
public <V> Map<String, V> toStringKeyMap(String json, Class<V> vClazz) {
Map<String, V> map = new HashMap<>();
try {
JsonObject obj = new JsonParser().parse(json).getAsJsonObject();
Set<Map.Entry<String, JsonElement>> entrySet = obj.entrySet();
for (Map.Entry<String, JsonElement> entry : entrySet) {
String entryKey = entry.getKey();
JsonObject object = (JsonObject) entry.getValue();
V value = mGson.fromJson(object, vClazz);
map.put(entryKey, value);
}
} catch (Exception e) {
return null;
}
return map;
}