• Android-GsonUtil工具类


    JSON解析封装相关工具类

    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;
        }
    
        // -------
    
        /**
         * 按章节点得到相应的内容
         * @param jsonString json字符串
         * @param note 节点
         * @return 节点对应的内容
         */
        public static String getNoteJsonString(String jsonString,String note){
            if(TextUtils.isEmpty(jsonString)){
                throw new RuntimeException("json字符串");
            }
            if(TextUtils.isEmpty(note)){
                throw new RuntimeException("note标签不能为空");
            }
            JsonElement element = new JsonParser().parse(jsonString);
            if(element.isJsonNull()){
                throw new RuntimeException("得到的jsonElement对象为空");
            }
            return element.getAsJsonObject().get(note).toString();
        }
    
        /**
         * 按照节点得到节点内容,然后传化为相对应的bean数组
         * @param jsonString 原json字符串
         * @param note 节点标签
         * @param beanClazz 要转化成的bean class
         * @return 返回bean的数组
         */
        public static <T> List<T> parserJsonToArrayBeans(String jsonString,String note,Class<T> beanClazz){
            String noteJsonString = getNoteJsonString(jsonString,note);
            return parserJsonToArrayBeans(noteJsonString,beanClazz);
        }
        /**
         * 按照节点得到节点内容,转化为一个数组
         * @param jsonString json字符串
         * @param beanClazz 集合里存入的数据对象
         * @return 含有目标对象的集合
         */
        public static <T> List<T> parserJsonToArrayBeans(String jsonString,Class<T> beanClazz){
            if(TextUtils.isEmpty(jsonString)){
                throw new RuntimeException("json字符串为空");
            }
            JsonElement jsonElement = new JsonParser().parse(jsonString);
            if(jsonElement.isJsonNull()){
                throw new RuntimeException("得到的jsonElement对象为空");
            }
            if(!jsonElement.isJsonArray()){
                throw new RuntimeException("json字符不是一个数组对象集合");
            }
            JsonArray jsonArray = jsonElement.getAsJsonArray();
            List<T> beans = new ArrayList<T>();
            for (JsonElement jsonElement2: jsonArray) {
                T bean = new Gson().fromJson(jsonElement2, beanClazz);
                beans.add(bean);
            }
            return beans;
        }
    
        /**
         * 把相对应节点的内容封装为对象
         * @param jsonString json字符串
         * @param clazzBean  要封装成的目标对象
         * @return 目标对象
         */
        public static <T> T parserJsonToArrayBean(String jsonString,Class<T> clazzBean){
            if(TextUtils.isEmpty(jsonString)){
                throw new RuntimeException("json字符串为空");
            }
            JsonElement jsonElement = new JsonParser().parse(jsonString);
            if(jsonElement.isJsonNull()){
                throw new RuntimeException("json字符串为空");
            }
            if(!jsonElement.isJsonObject()){
                throw new RuntimeException("json不是一个对象");
            }
            return new Gson().fromJson(jsonElement, clazzBean);
        }
        /**
         * 按照节点得到节点内容,转化为一个数组
         * @param jsonString json字符串
         * @param note json标签
         * @param clazzBean 集合里存入的数据对象
         * @return 含有目标对象的集合
         */
        public static <T> T parserJsonToArrayBean(String jsonString,String note,Class<T> clazzBean){
            String noteJsonString = getNoteJsonString(jsonString, note);
            return parserJsonToArrayBean(noteJsonString, clazzBean);
        }
    
        /**
         * 把bean对象转化为json字符串
         * @param obj bean对象
         * @return 返回的是json字符串
         */
        public static String toJsonString(Object obj){
            if(obj!=null){
                return new Gson().toJson(obj);
            }else{
                throw new RuntimeException("对象不能为空");
            }
        }
    
    }
  • 相关阅读:
    LG P4284 [SHOI2014]概率充电器
    LG P2592 [ZJOI2008]生日聚会
    LG P4953 [USACO02FEB]Cow Cycling
    LG P2389 电脑班的裁员
    LG P2344 [USACO11FEB]Generic Cow Protests G
    前端简历
    前端面试题目
    大前端的技术栈
    前端 -为什么要清楚浮动?
    Redis的功能实现
  • 原文地址:https://www.cnblogs.com/android-deli/p/10322148.html
Copyright © 2020-2023  润新知