首先,在module的gradle裏面添加Gson依賴,如下
compile 'com.google.code.gson:gson:2.8.0'
然後封裝的類,如下
import android.util.Log;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.ArrayList;
/**
* 基於Gson的一個工具類
*/
public class GsonUtils {
private GsonUtils() {
}
/**
* 將一個對象轉換爲JSON格式的串
*
* @param object 任意對象
*
* @return JSON格式的字符串
*/
public static String convertVO2String(Object object) {
try {
Gson gson = new Gson();
return gson.toJson(object);
} catch (Exception e) {
Log.e("Demo", "convertVO2String \r\n error = \r\n " + Log.getStackTraceString(e));
return null;
}
}
/**
* 將一個JSON格式的字符串轉換爲Java對象
*
* @param jsonStr 要轉換的JSON格式的字符串
* @param targetClass 要將這個JSON格式的字符串轉換爲什麼類型的對象
*
* @return 轉換之後的Java對象
*/
public static <T> T convertString2Object(String jsonStr, Class<T> targetClass) {
try {
Gson gson = new Gson();
if (isJson(jsonStr)) {
return gson.fromJson(jsonStr, targetClass);
} else {
return null;
}
} catch (Exception e) {
Log.e("Demo", "convertString2Object \r\n error = \r\n " + Log.getStackTraceString(e));
return null;
}
}
/**
* 將一個json轉換成一個集合對象
*
* @param jsonStr 要轉換的JSON格式的字符串
* @param typeToken TypeToken<這裏指定集合類型和泛型信息>
*
* @return 轉換之後的集合對象
*/
public static <T> T convertString2Collection(String jsonStr, TypeToken<T> typeToken) {
try {
Gson gson = new Gson();
if (isJson(jsonStr)) {
T t = gson.fromJson(jsonStr, typeToken.getType());
return t;
} else {
return null;
}
} catch (Exception e) {
Log.e("Demo", "convertString2Collection \r\n error = \r\n " + Log.getStackTraceString(e));
return null;
}
}
public static boolean isJson(String json) {
try {
JSONObject jsonObject = new JSONObject(json);
jsonObject = null;
return true;
} catch (JSONException e1) {
Log.e("Demo", "isJson \r\n error = \r\n " + Log.getStackTraceString(e1));
return false;
}
}
public static ArrayList<String> convertJson2Array(String str) {
ArrayList<String> strs = new ArrayList<String>();
try {
JSONArray arr = new JSONArray(str);
for (int i = 0; i < arr.length(); i++) {
strs.add(arr.getString(i));
}
} catch (JSONException e) {
e.printStackTrace();
}
return strs;
}
}