常用工具類之GsonUtils

首先,在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;
    }
}






發佈了30 篇原創文章 · 獲贊 4 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章