首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

FastJSON 常用操作實戰指南:從基礎序列化到複雜數據處理

     編輯:Java 相關知識

前言

FastJSON 作為阿里巴巴開源的高性能 JSON 庫,憑藉「快、強、零依賴」三大特性,已成為 Java 開發中處理 JSON 數據的首選工具。本文將通過完整代碼示例,系統講解 FastJSON 在實體轉換、集合處理、複雜數據結構、日期格式化等核心場景的最佳實踐。

核心功能演示

1. 基礎實體與 JSON 互轉

FastJSON 提供 JSON.toJSONString() 和 JSON.parseObject() 兩大核心方法,實現 Java Bean 與 JSON 字符串的無縫轉換:

// 實體類定義
public class Userinfo {
    private String name;
    private int age;
    // 構造器、Getter/Setter 省略
}

// 對象轉 JSON
Userinfo user = new Userinfo("chenggang", 24);
String jsonStr = JSON.toJSONString(user);
// 輸出: {"age":24,"name":"chenggang"}

// JSON 轉對象
Userinfo parsed = JSON.parseObject(jsonStr, Userinfo.class);

2. 集合類型深度處理

對於 List、Map 等集合類型,FastJSON 支持泛型保留與格式化輸出:

List<Userinfo> userList = new ArrayList<>();
userList.add(new Userinfo("lisi", 15));
userList.add(new Userinfo("wangwu", 16));

// 格式化輸出(第二個參數 true 開啟美化)
String listJson = JSON.toJSONString(userList, true);
/*
輸出結果:
[
    {"age":15,"name":"lisi"},
    {"age":16,"name":"wangwu"}
]
*/

3. 複雜巢狀數據結構構建

通過 Map 嵌套 Map/List,靈活構建任意層級的 JSON 結構:

Map<String, Object> complexData = new HashMap<>();
complexData.put("username", "zhangsan");
complexData.put("age", 24);

// 嵌套對象
Map<String, Object> girlInfo = new HashMap<>();
girlInfo.put("name", "xiaohong");
girlInfo.put("age", "23");
complexData.put("girlInfo", girlInfo);

// 嵌套列表
List<String> hobbies = Arrays.asList("登山", "騎車", "旅遊");
complexData.put("hobby", hobbies);

String result = JSON.toJSONString(complexData);
// 輸出包含對象、列表、基本類型的完整 JSON

4. 日期格式化定製化

利用 SerializerFeature.WriteDateUseDateFormat 實現多種日期輸出格式:

Date now = new Date();

// 默認輸出毫秒數
System.out.println(JSON.toJSONString(now)); 
// 輸出: 1700000000000

// 標準日期格式
System.out.println(JSON.toJSONString(now, SerializerFeature.WriteDateUseDateFormat));
// 輸出: "2023-11-15 14:30:00"

// 自定義格式
System.out.println(JSON.toJSONStringWithDateFormat(now, "yyyy-MM-dd", SerializerFeature.WriteDateUseDateFormat));
// 輸出: "2023-11-15"

5. 數組清洗與異常數據處理

針對包含 null 值的非標準 JSON 數組,提供優雅的清洗方案:

String dirtyArray = "[['馬雲',50],null,['馬化騰',30]]";
JSONArray array = JSONArray.parseArray(dirtyArray);

// 移除所有 null 元素
Collection<Object> nulls = new Vector<>();
nulls.add(null);
array.removeAll(nulls);
// 結果: [["馬雲",50],["馬化騰",30]]

性能優化建議

  • 啟用序列化特性:根據業務需求組合 SerializerFeature,如 WriteMapNullValue(輸出空字段)、DisableCircularReferenceDetect(禁用循環引用檢測提升性能)
  • 複用解析器:高頻場景下可使用 JSONReader/JSONWriter 流式 API 減少內存分配
  • 泛型擷取:配合 TypeReference 解決類型擦除導致的反序列化問題

總結

FastJSON 以極簡 API 覆蓋了 95% 的 JSON 處理場景。掌握核心方法組合、序列化特性配置、異常數據防禦三大維度,即可應對企業級開發中的各類數據交互需求。建議在項目中統一封裝工具類,規範日期格式、空值處理策略,提升團隊協作效率。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved