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 类,包含 name 和 age 两个属性,以及对应的 getter 和 setter 方法。
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 类的属性名不匹配,可能需要进行额外的配置或处理。
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
Spring @Conditional通过条件控制bean注册过程
这篇文章主要为大家介绍了Spring @Conditional通过条件控制bean注册过程详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪2023-02-02
springBoot项目配置文件加载优先级及同配置覆盖问题详解
SpringBoot配置⽂件可以放置在多种路径下,不同路径下的配置优先级有所不同,下面这篇文章主要给大家介绍了关于springBoot项目配置文件加载优先级及同配置覆盖问题的相关资料,需要的朋友可以参考下2023-05-05
springboot整合mybatis-plus基于注解实现一对一(一对多)查询功能
这篇文章主要介绍了springboot整合mybatis-plus基于纯注解实现一对一(一对多)查询功能,因为本人采用的是spring-boot进行开发,本身springboot就提倡采用不用配置自动配置的方式,所以真心希望mybatis(不是mybatis-plus)这点需要继续努力2021-09-09
Java中java.sql.SQLException异常的正确解决方法(亲测有效!)
SQLException是在Java中处理数据库操作过程中可能发生的异常,通常是由于底层数据库操作错误或违反了数据库规则而引起的,下面这篇文章主要给大家介绍了关于Java中java.sql.SQLException异常的正确解决方法,需要的朋友可以参考下2024-01-01


最新评论