Java?List<JSONObject>中的數(shù)據(jù)如何轉(zhuǎn)換為List<T>
Java List<JSONObject>數(shù)據(jù)轉(zhuǎn)換List<T>
從方法的功能推測,T 應該是一個具體的 Java Bean 類型,用于將 List<JSONObject> 中的數(shù)據(jù)轉(zhuǎn)換為 List<T>。
以下為你詳細介紹如何傳遞泛型 T 以及如何實現(xiàn)該方法。
import com.alibaba.fastjson.JSONObject;
import java.util.ArrayList;
import java.util.List;
// 定義一個通用的轉(zhuǎn)換方法
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 轉(zhuǎn)換為指定類型的對象
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<>();
// 創(chuàng)建示例 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);
// 調(diào)用轉(zhuǎn)換方法,傳遞 ExampleBean 類的 Class 對象
List<ExampleBean> exampleBeanList = GenericConverter.convertParamsBean(ExampleBean.class, jsonObjectList);
// 打印轉(zhuǎn)換后的結(jié)果
for (ExampleBean bean : exampleBeanList) {
System.out.println(bean);
}
}
}代碼解釋
convertParamsBean 方法:
- 該方法使用了泛型
<T>,接收一個Class<T>類型的參數(shù)clazz和一個List<JSONObject>類型的參數(shù)jsonObjectList。 - 遍歷
jsonObjectList,使用JSONObject.toJavaObject方法將每個JSONObject轉(zhuǎn)換為clazz所代表的類型的對象。 - 將轉(zhuǎn)換后的對象添加到
resultList中,并最終返回該列表。
ExampleBean 類:
這是一個示例的 Java Bean 類,包含 name 和 age 兩個屬性,以及對應的 getter 和 setter 方法。
Main 類的 main 方法:
- 創(chuàng)建一個
List<JSONObject>并添加兩個示例JSONObject。 - 調(diào)用
GenericConverter.convertParamsBean方法,傳遞ExampleBean.class作為clazz參數(shù),將List<JSONObject>轉(zhuǎn)換為List<ExampleBean>。 - 遍歷并打印轉(zhuǎn)換后的
List<ExampleBean>。
傳遞泛型 T 的方式
- 在調(diào)用
convertParamsBean方法時,需要傳遞具體的 Java Bean 類的Class對象,例如ExampleBean.class。 - 這樣,方法內(nèi)部就可以使用這個
Class對象來創(chuàng)建相應類型的實例,并將JSONObject中的數(shù)據(jù)填充到實例中。
注意事項
- 要確保使用的 JSON 處理庫(如 FastJSON)已經(jīng)正確添加到項目依賴中。
- 目標 Java Bean 類必須有默認的無參構(gòu)造函數(shù),因為
toJavaObject方法會使用反射創(chuàng)建對象。 - 如果
JSONObject中的字段名與 Java Bean 類的屬性名不匹配,可能需要進行額外的配置或處理。
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Spring Cloud Netflix架構(gòu)淺析(小結(jié))
這篇文章主要介紹了Spring Cloud Netflix架構(gòu)淺析(小結(jié)),詳解的介紹了Spring Cloud Netflix的概念和組件等,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-01-01
SpringBoot靜態(tài)類調(diào)用Bean的兩種方案(新手版)
這篇文章主要介紹了兩種解決Spring Boot中靜態(tài)類調(diào)用Bean問題的方法:方案一使用SpringContextHolder(中間人模式),方案二使用@PostConstruct注解(入住模式),根據(jù)具體需求選擇合適的方案,需要的朋友可以參考下2025-12-12
解決Maven本地倉庫明明有對應的jar包但還是報找不到的問題
這篇文章主要介紹了解決Maven本地倉庫明明有對應的jar包但還是報找不到的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-10-10
一篇文章帶你使用SpringBoot基于WebSocket的在線群聊實現(xiàn)
這篇文章主要介紹了一篇文章帶你使用SpringBoot基于WebSocket的在線群聊實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-10-10
SpringCloud Zuul實現(xiàn)負載均衡和熔斷機制方式
這篇文章主要介紹了SpringCloud Zuul實現(xiàn)負載均衡和熔斷機制方式,具有很好的參考價值,希望對大家有所幫助。2021-07-07

