泛型List转List对象(Json转换工具类)

这篇具有很好参考价值的文章主要介绍了泛型List转List对象(Json转换工具类)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

上期讲解了Java多线程查表(封装方法 多表通用)https://blog.csdn.net/weixin_56567361/article/details/128021905

因为是通用方法 返回的结果值为泛型List<T>类型

在使用list时 需要转换为list对象

下面我将对比三种转换方法:

1 阿里巴巴fastJson方法 

2 JAVA反射方式转换

3 强转方式

直接上测试图

list转对象,开发合集,java,开发语言,json,list,数据库

数据量约18w条
阿里巴巴fastJson方式转换: 726 ms
JAVA反射方式转换: 15 ms
强转方式: 16 ms


数据量多时JSON.toJSONString会很慢

java发射方式和强转方法比阿里巴巴fastJson方式快了40多倍

JAVA反射方式转换 未做类型校验 这样转换并不安全

List<T> mapList = (List<T>)jsonObject.get("list");

强转方式 最适合 首先判断obj是否是List类型,然后使用class.cast做类型转换

 JsonUtils

import com.alibaba.fastjson.JSONObject;
import org.apache.commons.compress.utils.Lists;

import java.lang.reflect.Field;
import java.util.*;

/**
 * Json转换工具类
 *
 */
public class JsonUtils {

    public static List<Field> fields = null;

    /**
     * 泛型List转List对象
     * 比JSON.parseArray(JSON.toJSONString(),T.class)
     * 快40倍
     *
     * @param obj 转换参数
     * @param cla 实体类
     * @param <T> 泛型
     * @return
     */
    public static <T> List<T> toList(Object obj, Class<T> cla) {
        List<T> list = new ArrayList<T>();
        //判断参数是否为List类型
        if (obj instanceof List<?>) {
            for (Object o : (List<?>) obj) {
                //将父类对象强制转换为子类对象
                list.add(cla.cast(o));
            }
            return list;
        }
        return null;
    }

    /**
     * List对象转List<map>
     *
     * @param list
     * @return
     * @throws IllegalAccessException
     */
    public static List<Map<String, Object>> toMap(List<?> list) throws IllegalAccessException {
        List<Map<String, Object>> mapList = new ArrayList<>();
        for (Object o : list) {
            Map<String, Object> map = objToMap(o);
            mapList.add(map);
        }
        return mapList;
    }

    /**
     * 对象转map
     *
     * @param object
     * @return
     * @throws IllegalAccessException
     */
    public static Map<String, Object> objToMap(Object object) throws IllegalAccessException {
        Map<String, Object> map = new HashMap<>();
        Field[] fields = object.getClass().getDeclaredFields();
        for (Field field : fields) {
            field.setAccessible(true);
            map.put(field.getName(), field.get(object));
        }
        return map;
    }

    /**
     * 反射方式拿到类的field集合
     */
    public static <T> void init(T vo) {
        Class<?> aClass = vo.getClass();
        fields = Lists.newArrayList();
        for (Class<?> i = aClass; i != Object.class; i = i.getSuperclass()) {
            Field[] declaredFields = i.getDeclaredFields();
            Collections.addAll(fields, declaredFields);
        }
    }

    /**
     * 反射方式  泛型List转为List对象
     *
     * @param vo
     * @param T
     * @param <T>
     * @return
     * @throws IllegalAccessException
     */
    public static <T> List<T> testReflection(List<?> vo, Class<T> T) throws IllegalAccessException {
        if (fields == null) {
            init(vo);
        }
        JSONObject jsonObject = new JSONObject();
        for (Field field : fields) {
            field.setAccessible(true);
            jsonObject.put(field.getName(), field.get(vo));
        }
        //未做类型校验 这样转换并不安全
        List<T> mapList = (List<T>)jsonObject.get("list");
        return mapList;
    }
}

 至此本篇文章就讲到这里啦

如果有什么写的不对的或问题 欢迎留言讨论~😋文章来源地址https://www.toymoban.com/news/detail-615334.html

到了这里,关于泛型List转List对象(Json转换工具类)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java中的List<T>对象与Json格式的字符串的相互转换

    在这里我随便举一个例子 OK,以上就是互相转换的过程 我使用的场景是在订单的订单列表项这里,涉及到数据库相应字段数据的存放与提取,我的做法是,将List转换为Json格式字符串存入,取时再将Json格式转为List

    2024年02月15日
    浏览(67)
  • 两个list对象取合集、差集

    2024年01月17日
    浏览(42)
  • Java List对象集合转Json & Json转List对象集合

    使用了阿里巴巴的 fastjson  首先引入依赖 示例如下 输出结果:

    2024年02月15日
    浏览(57)
  • json类型转换对象含有泛型

    接受数据的对象1 对象1里有list 泛型 因为此时接受的是Book类的数据,所以我转换的时候指定了转换类型为Book类型 接受的其他类型的数据,可以转换的时候指定这个类型就可以了 实操代码 输出结果 TypeReference是在运行时指定要转换的类型包括泛型 fastjson的版本 从而实现指定泛型

    2024年02月02日
    浏览(39)
  • dataTable转成对象、json、list

    datatable转换成list集合 //多行datatable数据转换为对象: datatable转换成json

    2024年02月15日
    浏览(48)
  • Java Stream流 List< T >转换Map方法汇总合集(大概是最全吧)

    本文主要介绍 Java 中利用 Stream 流将 List T 类型数据转换成 Map 类型的几种方法整合汇总,其中包含了toMap()、groupingBy()、partitioningBy()等方法的使用,建议收藏方便查阅,如果有帮助到您,不要吝啬点赞、收藏! tips:本文没有推荐使用三方类库提供的 List 转 Map 工具类方法,因

    2024年02月04日
    浏览(46)
  • 【微信小程序】【微信开发者工具】[ app.json 文件内容错误] app.json: [“tabBar“][“list“][1][“iconPath“]: “xxx/yyy.png“ 未找到

    开发者工具版本 :1.06.2206090 报错 [ app.json 文件内容错误] app.json: [\\\"tabBar\\\"][\\\"list\\\"][1][\\\"iconPath\\\"]: \\\"static/tab_icons/cate.png\\\" 未找到 (env: Windows,mp,1.06.2206090; lib: 2.19.4) 现象 原因 图片相对路径写错,相对路径是相对根目录的路径。 解决 1.目录层级放在根目录下,即与pages同级; 2.目录层级

    2024年02月11日
    浏览(47)
  • Java中 List 和 JSON字符串之间的相互转换

    Java中 List 和 JSON字符串之间的相互转换 List 转 JSON 字符串 前端js将后端的json字符串转对象 JSON字符串转List

    2024年04月23日
    浏览(72)
  • 将 MongoDB 的 List<Document> 转换为对象列表

    当我们使用 MongoDB 存储数据时,经常会涉及到将 MongoDB 的文档对象转换为对象列表的需求。在 Java 中,我们可以使用 MongoDB 的 Java 驱动程序和自定义类来实现这一转换过程。 本篇博客将介绍如何将 MongoDB 中的 ListDocument 转换为对象列表。以下是实现的步骤: 首先,我们需要定

    2024年02月15日
    浏览(40)
  • JSON转换List<Map<String, Object>>、Map<String, Object>

    废话就不说了 早上10点研究到现在 获取redis的JSON字符串 String getPalletListNew = redisService.getRedis(“getPalletListNew”, abroad + “” + goodsLevel + “” + startPort + “” + destinationPort + “” + maxTon + “” + minTon); 转换MapString,Object public MapString, Object jsonToMap(String json){ MapString, Object map = new

    2024年02月20日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包