Gson封装

来源:互联网 发布:阿里云香港节点ip 编辑:程序博客网 时间:2024/06/12 15:13

Gson封装

/** * Created by fengan on 2017/7/6/006. */import com.google.gson.Gson;import com.google.gson.JsonArray;import com.google.gson.JsonElement;import com.google.gson.JsonParser;import com.google.gson.reflect.TypeToken;import java.util.ArrayList;import java.util.List;import java.util.Map;public class GsonUtil {    private static Gson gson = null;    static {        if (gson == null) {            gson = new Gson();        }    }    private GsonUtil() {    }    /**     * 转成json     *     * @param object     * @return     */    public static String GsonString(Object object) {        String gsonString = null;        if (gson != null) {            gsonString = gson.toJson(object);        }        return gsonString;    }    /**     * 转成bean     *     * @param gsonString     * @param cls     * @return     */    public static <T> T GsonToBean(String gsonString, Class<T> cls) {        T t = null;        if (gson != null) {            t = gson.fromJson(gsonString, cls);        }        return t;    }    /**     * 转成list     * 泛型在编译期类型被擦除导致报错     *     * @param gsonString     * @param cls     * @return     */    public static <T> List<T> GsonToList(String gsonString, Class<T> cls) {        List<T> list = null;        if (gson != null) {            list = gson.fromJson(gsonString, new TypeToken<List<T>>() {            }.getType());        }        return list;    }    /**     * 转成list     * 解决泛型问题     *     * @param json     * @param cls     * @param <T>     * @return     */    public static <T> List<T> jsonToList(String json, Class<T> cls) {        Gson gson = new Gson();        List<T> list = new ArrayList<T>();        JsonArray array = new JsonParser().parse(json).getAsJsonArray();        for (final JsonElement elem : array) {            list.add(gson.fromJson(elem, cls));        }        return list;    }    /**     * 转成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;    }    /**     * 转成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;    }}