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

从方法的功能推测,T 应该是一个具体的 Java Bean 类型,用于将 List<JSONObject> 中的数据转换为 List<T>。以下为你详细介绍如何传递泛型 T 以及如何实现该方法。

java 复制代码
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 类的属性名不匹配,可能需要进行额外的配置或处理。
相关推荐
Scott9999HH3 小时前
【IIoT流量实战】蒸汽管道阀门全关却仍有流量?用 Python 实现涡街信号 FFT 频谱分析与温压全补偿积算网关,深度拆解靠谱的涡街流量计厂家硬核技术标准
开发语言·python
腻害兔3 小时前
【若依项目-产品经理视角】深度拆解 RuoYi-Vue-Pro 商城模块:从商品管理到交易引擎,50 张表撑起一整套电商系统
java·大数据·vue.js·产品经理·ai编程
码智社4 小时前
AES加密原理详解及Java实现加解密实战
java·开发语言
AI云海4 小时前
python 列表、元组、集合和字典
开发语言·python
萧瑟余晖5 小时前
JDK 26 新特性详解
java·开发语言
马优晨6 小时前
Freemarker 完整讲解(后端 Java 模板引擎)
java·开发语言·freemarker·freemarker 完整讲解·freemarker模板引擎
人邮异步社区7 小时前
怎么把C语言学到精通?
c语言·开发语言
心平气和量大福大8 小时前
C#-WPF-控件-TextBox 数据绑定
开发语言·c#·wpf
ttwuai8 小时前
Cursor 生成 CRUD 后,Go 后台接口别只测 200:JWT、RBAC 和 tenant_id 怎么验
开发语言·后端·golang
维天说8 小时前
CLI-Switch 2026年3月版历史设计:Hook、TTY 隔离与 JSON 状态
java·服务器·json