Java List<JSONObject>中的数据如何转换为List<T>

 更新时间:2025年05月20日 08:37:24   作者:CnLg.NJ  
这篇文章主要介绍了Java List<JSONObject>中的数据如何转换为List<T>问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

Java List<JSONObject>数据转换List<T>

从方法的功能推测,T 应该是一个具体的 Java Bean 类型,用于将 List<JSONObject> 中的数据转换为 List<T>

以下为你详细介绍如何传递泛型 T 以及如何实现该方法。

import com.alibaba.fastjson.JSONObject;
import java.util.ArrayList;
import java.util.List;

// 定义一个通用的转换方法
public class GenericConverter {
    public static <T> List<T> convertParamsBean(Class<T> clazz, List<JSONObject> jsonObjectList) {
        List<T> resultList = new ArrayList<>();
        for (JSONObject jsonObject : jsonObjectList) {
            try {
                // 使用 FastJSON 将 JSONObject 转换为指定类型的对象
                T instance = JSONObject.toJavaObject(jsonObject, clazz);
                resultList.add(instance);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        return resultList;
    }
}

// 定义一个示例 Bean 类
class ExampleBean {
    private String name;
    private int age;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "ExampleBean{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

public class Main {
    public static void main(String[] args) {
        List<JSONObject> jsonObjectList = new ArrayList<>();

        // 创建示例 JSONObject
        JSONObject jsonObject1 = new JSONObject();
        jsonObject1.put("name", "Alice");
        jsonObject1.put("age", 25);
        jsonObjectList.add(jsonObject1);

        JSONObject jsonObject2 = new JSONObject();
        jsonObject2.put("name", "Bob");
        jsonObject2.put("age", 30);
        jsonObjectList.add(jsonObject2);

        // 调用转换方法,传递 ExampleBean 类的 Class 对象
        List<ExampleBean> exampleBeanList = GenericConverter.convertParamsBean(ExampleBean.class, jsonObjectList);

        // 打印转换后的结果
        for (ExampleBean bean : exampleBeanList) {
            System.out.println(bean);
        }
    }
}

代码解释

convertParamsBean 方法

  • 该方法使用了泛型 <T>,接收一个 Class<T> 类型的参数 clazz 和一个 List<JSONObject> 类型的参数 jsonObjectList
  • 遍历 jsonObjectList,使用 JSONObject.toJavaObject 方法将每个 JSONObject 转换为 clazz 所代表的类型的对象。
  • 将转换后的对象添加到 resultList 中,并最终返回该列表。

ExampleBean

这是一个示例的 Java Bean 类,包含 nameage 两个属性,以及对应的 gettersetter 方法。

Main 类的 main 方法

  • 创建一个 List<JSONObject> 并添加两个示例 JSONObject
  • 调用 GenericConverter.convertParamsBean 方法,传递 ExampleBean.class 作为 clazz 参数,将 List<JSONObject> 转换为 List<ExampleBean>
  • 遍历并打印转换后的 List<ExampleBean>

传递泛型 T 的方式

  • 在调用 convertParamsBean 方法时,需要传递具体的 Java Bean 类的 Class 对象,例如 ExampleBean.class
  • 这样,方法内部就可以使用这个 Class 对象来创建相应类型的实例,并将 JSONObject 中的数据填充到实例中。

注意事项

  • 要确保使用的 JSON 处理库(如 FastJSON)已经正确添加到项目依赖中。
  • 目标 Java Bean 类必须有默认的无参构造函数,因为 toJavaObject 方法会使用反射创建对象。
  • 如果 JSONObject 中的字段名与 Java Bean 类的属性名不匹配,可能需要进行额外的配置或处理。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • jedis获取redis中二进制图片转Base64方式

    jedis获取redis中二进制图片转Base64方式

    这篇文章主要介绍了jedis获取redis中二进制图片转Base64方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07
  • Spring @Conditional通过条件控制bean注册过程

    Spring @Conditional通过条件控制bean注册过程

    这篇文章主要为大家介绍了Spring @Conditional通过条件控制bean注册过程详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-02-02
  • 浅析Java中的动态代理

    浅析Java中的动态代理

    动态代理指代理类和目标类的关系在程序运行的时候确定的,客户通过代理类来调用目标对象的方法。本文将通过案例详细讲解一下Java动态代理的原理及实现,需要的可以参考一下
    2022-09-09
  • springBoot项目配置文件加载优先级及同配置覆盖问题详解

    springBoot项目配置文件加载优先级及同配置覆盖问题详解

    SpringBoot配置⽂件可以放置在多种路径下,不同路径下的配置优先级有所不同,下面这篇文章主要给大家介绍了关于springBoot项目配置文件加载优先级及同配置覆盖问题的相关资料,需要的朋友可以参考下
    2023-05-05
  • springboot整合mybatis-plus基于注解实现一对一(一对多)查询功能

    springboot整合mybatis-plus基于注解实现一对一(一对多)查询功能

    这篇文章主要介绍了springboot整合mybatis-plus基于纯注解实现一对一(一对多)查询功能,因为本人采用的是spring-boot进行开发,本身springboot就提倡采用不用配置自动配置的方式,所以真心希望mybatis(不是mybatis-plus)这点需要继续努力
    2021-09-09
  • Java定时任务原理详解

    Java定时任务原理详解

    当下,java编码过程中,实现定时任务的方式主要以以下两种为主:spring框架的@Scheduled和quzrtz框架。本文主要就二者的框架原理实现做一个入门引导,为了解深层实现细节做一定的铺垫
    2022-07-07
  • SpringBoot基于数据库的定时任务统一管理的实现

    SpringBoot基于数据库的定时任务统一管理的实现

    这篇文章主要介绍了SpringBoot基于数据库的定时任务统一管理的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • Java集合功能与用法实例详解

    Java集合功能与用法实例详解

    这篇文章主要介绍了Java集合功能与用法,结合实例形式详细分析了java集合的基本概念、功能、原理、操作技巧与使用注意事项,需要的朋友可以参考下
    2020-04-04
  • Java中java.sql.SQLException异常的正确解决方法(亲测有效!)

    Java中java.sql.SQLException异常的正确解决方法(亲测有效!)

    SQLException是在Java中处理数据库操作过程中可能发生的异常,通常是由于底层数据库操作错误或违反了数据库规则而引起的,下面这篇文章主要给大家介绍了关于Java中java.sql.SQLException异常的正确解决方法,需要的朋友可以参考下
    2024-01-01
  • SpringData JPA实体映射与关系映射的实现

    SpringData JPA实体映射与关系映射的实现

    Spring Data JPA作为Spring生态系统中的核心项目,通过JPA规范提供了优雅而强大的实体映射与关系处理机制,下面就来介绍一下,感兴趣的可以了解一下
    2025-04-04

最新评论