Java 資料模型與 JSON 反序列化架構
在現代 Java 後端開發(包含 Spring Boot、Quarkus 與 Micronaut 等框架)中,處理外部 HTTP RESTful API 或微服務間傳遞的 JSON 酬載時,資料傳輸物件(DTO,Data Transfer Object)或領域模型(Domain Model)的建立是日常不可或缺的工作。
手動撰寫大量 getter、setter、建構子以及 Jackson 註解不僅耗費時間,且容易在欄位型別或命名對齊上產生人為疏漏。本工具提供純前端、零伺服器傳輸之即時程式碼生成環境,支援 Java 17+ 標準 Record 與傳統 JavaBean POJO 雙重產出風格。
支援的 Java 程式碼風格與語法特性
1. Java 17+ Record 模式(推薦現代專案使用)
Java 17 成為主流 LTS 版本後,Record 提供了乾淨簡潔的不可變(immutable)資料承載語法:
import com.fasterxml.jackson.annotation.JsonProperty;
import java.util.List;
public record UserProfile(
@JsonProperty("userId")
Long userId,
@JsonProperty("userName")
String userName,
@JsonProperty("emailAddress")
String emailAddress,
@JsonProperty("roles")
List<String> roles
) {}
- 自動實作:JVM 原生自動產生全參數建構子、存取子方法、
equals()、hashCode()與toString()。 - 不可變性保障:所有欄位皆隱含
private final,杜絕執行階段非預期的狀態變更。 - 序列化相容:完美搭配 Jackson
jackson-databind2.12+ 反序列化引擎。
2. 傳統 POJO 類別搭配 Lombok 註解
對於既有遺留系統或採用可變物件模型的企業專案,工具支援標準 POJO 類別結構,並可勾選整合 Lombok 標籤:
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.AllArgsConstructor;
import com.fasterxml.jackson.annotation.JsonProperty;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class UserProfile {
@JsonProperty("userId")
private Long userId;
@JsonProperty("userName")
private String userName;
@JsonProperty("emailAddress")
private String emailAddress;
}
欄位型別推斷與映射邏輯
轉換器深度掃描 JSON 語法樹,遵循以下嚴謹型別規則:
- 整數數值 (Integers):
- 數值位於
-2147483648至2147483647區間時,推斷為Integer。 - 超過 32 位元整數範圍時,自動升級為
Long。
- 數值位於
- 浮點數值 (Floating-point):一律推斷為雙精度
Double。 - 布林值 (Booleans):映射為物件包裝型別
Boolean,允許為空。 - 字串 (Strings):映射為
String。 - 陣列 (Arrays):
- 純量元素陣列映射為泛型
List<T>(例如List<String>、List<Integer>)。 - 物件陣列映射為
List<ItemDto>,並遞迴生成子類別結構。
- 純量元素陣列映射為泛型
- 巢狀物件 (Objects):自動抽取並以 PascalCase 命名規則建立獨立子類別。
操作指南與使用步驟
- 貼上或載入 JSON 資料:將原始 API 回應或設定檔 JSON 貼入左側編輯框,亦可點擊「載入範例」按鈕快速體驗。
- 選擇輸出風格:於上方工具列切換「Java 17 Record」或「POJO (Lombok / Getters)」。
- 設定類別名稱:自訂根類別(Root Class)名稱(預設為
RootDto)。 - 一鍵複製:點擊右上角「複製程式碼」按鈕,即可將產出的 Java 程式碼直接貼入 IDE(IntelliJ IDEA、Eclipse 或 VS Code)中使用。