zoukankan      html  css  js  c++  java
  • fastjson的JSONArray转化为泛型列表

    背景:一个复杂结构体内部可能有array的数据,例如:{name:"test",cities:[{name:"shanghai",area:1,code:20010},{name:"suzhou",area:1,code:200200},...]},如果将整个结构体映射为JSONObject,那么cities的结构只能以JSONArray的结构取出来,而fastjson的JSONArray没有提供转换为List<T>的方法。

    分析:fastjson提供了将JSONObject转化为java类的方法,可以遍历JSONArray,将其中的元素转化为类的实体。

    解决:

    /**
         * 将 fastjson的JSONArray转化为泛型列表
         * @param jsonArray 源数据
         * @param clz 泛型类
         * @param <T> 泛型
         * @return list
         */
        public static <T> List<T> convertJSONArrayToTypeList(JSONArray jsonArray,Class<T> clz){
            if (CollectionUtils.isEmpty(jsonArray)){
                return new ArrayList<T>();
            }
            List<T> result = new ArrayList<T>(jsonArray.size());
            jsonArray.forEach(element->{
                // 基础类型不可以转化为JSONObject,需要特殊处理
                if (element instanceof String
                        || element instanceof Number
                        || element instanceof Boolean
                        ){
                    result.add((T)element);
                }else {
                    T t = JSONObject.toJavaObject((JSONObject)element, clz);
                    result.add(t);
                }
            });
            return result;
        }
  • 相关阅读:
    iOS 日历控件
    iOS签发者无效
    Swift3
    GitHub管理代码-随笔
    iOS10 适配问题-Xcode8
    iOS 性能调试
    bug
    贝塞尔曲线(UIBezierPath)属性、方法汇总
    webView 自适应高度 document.body 属性
    iOS-集成支付宝支付、微信支付简单总结
  • 原文地址:https://www.cnblogs.com/yucy/p/9067038.html
Copyright © 2011-2022 走看看