import com.google.gson.Gson;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonParser;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.List;
/**
* gson 工具类
* 注:
* 不需要解析和反解析的字段都要加上transient
* 比如:
* transient Uri CONTENT_URI = Uri.parse("content://" + MoImContent.AUTHORITIE + "/imcloud_group_member”);
* 如果这 Uri 不加上transient会导致解析和反解析异常。
* Created by huangrenqian833 on 2018/6/15.
*/
public class GsonUtils {
private static final String TAG = GsonUtils.class.getSimpleName();
private static volatile GsonUtils instance;
private Gson gson = null;
private GsonUtils(Gson gson) {
this.gson = gson;
}
public static GsonUtils getInstance() {
if (instance == null) {
synchronized (GsonUtils.class) {
if (instance == null) {
instance = new GsonUtils(new Gson());
}
}
}
return instance;
}
/**
* 转成String
*
* @param object object
* @return String
*/
public String jsonToString(Object object) {
try {
return gson.toJson(object);
} catch (Exception e) {
Log.e(TAG, e.getMessage());
}
return "";
}
/**
* 转成bean
*
* @param jsonString 字符串
* @param cls 目标 jsonObject
* @return jsonObject
*/
public <T> T jsonToBean(String jsonString, Type cls) {
try {
return gson.fromJson(jsonString, cls);
} catch (Exception e) {
Log.e(TAG, e.getMessage());
}
return null;
}
/**
* 转成bean
*
* @param jsonString 字符串
* @param cls 目标 jsonObject
* @return jsonObject
*/
public <T> T jsonToBean(String jsonString, Class<T> cls) {
try {
return gson.fromJson(jsonString, cls);
} catch (Exception e) {
Log.e(TAG, e.getMessage());
}
return null;
}
public <T> T jsonToBeanThrow(String jsonString, Class<T> cls) {
return gson.fromJson(jsonString, cls);
}
/**
* 转成list
*
* @param jsonString 字符串
* @param cls 目标 jsonObject
* @return 目标 jsonObject list
*/
public <T> List<T> jsonToList(String jsonString, Class<T> cls) {
try {
List<T> list = new ArrayList<>();
JsonArray array = new JsonParser().parse(jsonString).getAsJsonArray();
for (final JsonElement elem : array) {
list.add(gson.fromJson(elem, cls));
}
return list;
} catch (Exception e) {
Log.e(TAG, e.getMessage());
}
return null;
}
/**
* 转成ArrayList
*
* @param jsonString 字符串
* @param cls 目标 jsonObject
* @return 目标 jsonObject list
*/
public <T> ArrayList<T> jsonToArrayList(String jsonString, Class<T> cls) {
try {
ArrayList<T> list = new ArrayList<>();
JsonArray array = new JsonParser().parse(jsonString).getAsJsonArray();
for (final JsonElement elem : array) {
list.add(gson.fromJson(elem, cls));
}
return list;
} catch (Exception e) {
Log.e(TAG, e.getMessage());
}
return null;
}
}