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

Java JSON 庫 Zson 使用示例:序列化與反序列化

     編輯:Java 相關知識

Zson 是一款輕量級 Java JSON 庫(項目地址:GitHub),提供流暢 API、日期格式化、空值控制、泛型類型引用等特性。本文展示其核心用法。

Maven 依賴

<dependency>
    <groupId>org.zson</groupId>
    <artifactId>zson</artifactId>
    <version>1.0</version> <!-- 請查倉庫最新版 -->
</dependency>

核心代碼示例

import java.util.*;
import java.lang.reflect.Type;
import org.zson.JsonSerializer;
import org.zson.JsonDeserializer;
import org.zson.TypeReference;
import test.bean.SomeBean;

public class TestZson {
    public static void main(String[] args) {
        // 1. 構建測試數據
        List list = new ArrayList<>();
        list.add(new SomeBean("Alice", 25));
        list.add(new SomeBean("Bob", 30));

        // 2. 序列化:對象 → JSON 字符串
        JsonSerializer serializer = new JsonSerializer()
            .prettyFormat(2)        // 縮進 2 空格美化
            .ignoreNull(false)      // 包含 null 字段
            .dateFormat("yyyy-MM-dd"); // 日期格式

        String json = serializer.serialize(list);
        System.out.println("JSON輸出:\n" + json);
        // 輸出示例:
        // [
        //   {"name":"Alice","age":25,"birth":"1999-01-01"},
        //   {"name":"Bob","age":30,"birth":"1994-05-20"}
        // ]

        // 3. 反序列化:JSON 字符串 → 對象(關鍵:TypeReference 保留泛型)
        Type type = new TypeReference>() {}.getType();
        List result = (List) new JsonDeserializer().deserialize(json, type);

        // 4. 驗證
        for (SomeBean bean : result) {
            System.out.println(bean.getName() + " - " + bean.getAge());
        }
    }
}

關鍵特性解析

特性API說明
美化輸出 .prettyFormat(indent) 縮進空格數,調試友好
空值處理 .ignoreNull(boolean) true 忽略 null,false 輸出 "null"
日期格式 .dateFormat(pattern) SimpleDateFormat 模式
泛型反序列化 TypeReference<T>() {}.getType() 解決類型擦除,獲取完整 ParameterizedType

TypeReference 原理

// 匿名內部類繼承 TypeReference,編譯器保留泛型信息
Type type = new TypeReference>() {}.getType();
// 等價於:
// ParameterizedTypeImpl(List, [Class(SomeBean)])

這是 Java 庫(Gson、Jackson、Fastjson)通用的泛型類型捕獲模式。

對比主流庫

庫優勢適用場景
Jackson性能最強、生態完善、模組化企業級標準選擇
GsonAPI 簡潔、Google 維護、Android 友好中小項目、Android
Fastjson國產、極速、功能豐富國內高併發項目(注意歷史漏洞)
Zson輕量、流暢 API、TypeReference 內置學習、輕量級項目、教學

Zson 以簡潔的流暢 API 和內置 TypeReference 降低泛型反序列化門檻,適合快速上手 JSON 處理。生產環境建議選用 Jackson 或 Gson,獲得更好的性能、安全性與社區支持。

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