Java List<JSONObject>如何轉(zhuǎn)換為List<實體類>
List<JSONObject>轉(zhuǎn)換為List<實體類>
可以使用 Fastjson 的 toJavaObject 方法直接轉(zhuǎn)換,無需中間序列化步驟。
以下是具體實現(xiàn)和注意事項:
import com.alibaba.fastjson.JSONObject;
import java.util.List;
import java.util.stream.Collectors;
public class Converter {
public static List<Params6000Bean> convert(List<JSONObject> jsonObjectList) {
return jsonObjectList.stream()
.map(json -> json.toJavaObject(Params6000Bean.class))
.collect(Collectors.toList());
}
}或通過傳統(tǒng)循環(huán)實現(xiàn):
import com.alibaba.fastjson.JSONObject;
import java.util.ArrayList;
import java.util.List;
public class Converter {
public static List<Params6000Bean> convert(List<JSONObject> jsonObjectList) {
List<Params6000Bean> result = new ArrayList<>();
for (JSONObject json : jsonObjectList) {
Params6000Bean bean = json.toJavaObject(Params6000Bean.class);
result.add(bean);
}
return result;
}
}關(guān)鍵步驟說明
1)遍歷 List<JSONObject>
使用 Stream API 或循環(huán)逐個處理每個 JSONObject。
2)調(diào)用 toJavaObject() 方法
Fastjson 的 JSONObject.toJavaObject(Class<T> clazz) 直接將 JSON 數(shù)據(jù)結(jié)構(gòu)映射到目標(biāo) Bean 類。
3)收集結(jié)果
將轉(zhuǎn)換后的 Params6000Bean 對象收集到新的 List 中。
注意事項
字段匹配
Params6000Bean的字段名需與 JSON 中的鍵名一致。- 若字段名不一致,可使用
@JSONField(name = "json_key")注解:
public class Params6000Bean {
@JSONField(name = "user_name")
private String userName;
// 其他字段和 getter/setter
}類型兼容性
- JSON 中的值類型需與 Bean 字段類型兼容(如
String轉(zhuǎn)Integer會失?。?/li> - 若類型不一致,需自定義反序列化邏輯或使用 Fastjson 的
@JSONField(deserializeUsing = CustomDeserializer.class)。
空值處理
- 若 JSON 中某字段為
null,Bean 的對應(yīng)字段需允許null(如使用包裝類型Integer而非int)。
性能優(yōu)化
- 直接使用
toJavaObject()避免序列化為字符串,效率更高。 - 對于大數(shù)據(jù)量,推薦使用 Stream API 或并行流(需確保線程安全)。
示例 Bean 類
public class Params6000Bean {
private String name;
private int age;
private boolean isStudent;
// 必須有 getter/setter 或 public 字段
}異常處理
如果 JSON 數(shù)據(jù)可能存在缺失字段或類型錯誤,建議捕獲異常:
try {
List<Params6000Bean> beans = convert(jsonObjectList);
} catch (Exception e) {
// 處理轉(zhuǎn)換異常(如字段缺失、類型不匹配)
e.printStackTrace();
}總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Spring Cloud Gateway替代zuul作為API網(wǎng)關(guān)的方法
本文簡要介紹如何使用Spring Cloud Gateway 作為API 網(wǎng)關(guān)(不是使用zuul作為網(wǎng)關(guān)),結(jié)合實例代碼給大家詳細講解,感興趣的朋友跟隨小編一起看看吧2023-02-02
Spring中@Repository注解的作用和用法以及和@Mapper的區(qū)別詳析
這篇文章主要給大家介紹了關(guān)于Spring中@Repository注解的作用和用法以及和@Mapper的區(qū)別的相關(guān)資料,注解的作用是標(biāo)識一個類為數(shù)據(jù)訪問對象,并由Spring框架進行實例化和管理,需要的朋友可以參考下2023-09-09
Java多態(tài)在Spring Boot 3中的實際應(yīng)用實例教程
本文詳細介紹了多態(tài)在SpringBoot中的應(yīng)用,通過實際應(yīng)用場景和設(shè)計模式的深度解析,展示了多態(tài)在構(gòu)建松耦合、高內(nèi)聚軟件架構(gòu)中的重要性,并提供了性能優(yōu)化和最佳實踐建議,感興趣的朋友跟隨小編一起看看吧2026-02-02

