美文网首页
Gson字符串转List对象[泛型操作]

Gson字符串转List对象[泛型操作]

作者: JayGengi | 来源:发表于2018-04-13 10:56 被阅读0次
    根据集合转换成JsonArray[Gson工具包]集合,然后通过Gson工具类直接遍历转化List实体对象的过程。
            //模拟服务端json数据
            String json = "[\n" +
                    "        {\n" +
                    "          \"name\": \"张三\",\n" +
                    "          \"code\": \"zhangsan\"\n" +
                    "        },\n" +
                    "        {\n" +
                    "          \"name\": \"李四\",\n" +
                    "          \"code\": \"lisi\"\n" +
                    "        },\n" +
                    "        {\n" +
                    "          \"name\": \"王五\",\n" +
                    "          \"code\": \"wangwu\"\n" +
                    "        }\n" +
                    "      ]";
            List<PeopleInfo> peopleInfoList = parseString2List(json,PeopleInfo.class);
    
    /**
         * Gson字符串数组转成List对象[泛型操作]
         * author: JayGengi 60167
         * email:  gengy@chinaraising.com
         * time:  2018/04/13 10:01
         */
        public <T> List<T> parseString2List(String json,Class clazz) {
            //泛型转换
            Type type = new ParameterizedTypeImpl(clazz);
            List<T> list =  new Gson().fromJson(json, type);
            return list;
        }
    
    /**
         * Gson解析不支持泛型,利用ParameterizedType获取泛型参数类型
         * author: JayGengi 60167
         * email:  gengy@chinaraising.com
         * time:  2018/04/13 10:01
         */
        private class ParameterizedTypeImpl implements ParameterizedType {
            Class clazz;
    
            public ParameterizedTypeImpl(Class clz) {
                clazz = clz;
            }
            @Override
            public Type[] getActualTypeArguments() {
                //返回实际类型组成的数据
                return new Type[]{clazz};
            }
            @Override
            public Type getRawType() {
                //返回原生类型,即HashMap
                return List.class;
            }
            @Override
            public Type getOwnerType() {
                //返回Type对象
                return null;
            }
        }
    

    相关文章

      网友评论

          本文标题:Gson字符串转List对象[泛型操作]

          本文链接:https://www.haomeiwen.com/subject/citckftx.html