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 类的属性名不匹配,可能需要进行额外的配置或处理。
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。