Java List<JSONObject>中的数据如何转换为List<T>
作者: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 类,包含 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 类的属性名不匹配,可能需要进行额外的配置或处理。
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
