🎉 我們上線了 Product Hunt!支持我們並給我們反饋
返回

JSON 轉 Java Bean 轉換器

將 JSON 對象轉換為 Java 類,可選擇使用 Lombok 支持

配置

基本使用

將您的 JSON 對象轉換為具有適當 getter、setter 和可選 Lombok 支持的 Java Bean 類。

基本步驟

  • 在輸入框中輸入您的 JSON 或使用載入範例按鈕
  • 配置包名、類名和 Lombok 設置
  • 點擊「生成 Java Bean」以創建 Java 類
  • 複製生成的程式碼供您使用

JSON 與 Java 的型別對應

型別是根據你貼上的範例值推斷出來的,而不是來自 schema,因此產生的類別只會和輸入的 JSON 一樣準確。請提供一份具代表性的文件——把所有可選欄位都填上值——並對照下表檢查是否符合你的領域模型。

JSON 值Java 型別說明
"hello"String所有未被辨識為日期的引號值,預設都對應為 String。
"2024-01-01T00:00:00Z"LocalDateTime符合 ISO 8601 格式的字串會對應為 LocalDateTime。而 Unix 時間戳是以數字形式出現的,因此會變成 Integer 或 Double。
30Integer整數會對應為 Integer。超出 32 位元範圍的值需要手動改成 Long。
95.5Double帶小數部分的數字都會對應為 Double。涉及金額時請改用 BigDecimal——Double 並不適合用於貨幣運算。
trueBoolean全部使用包裝型別,這樣欄位缺失時可以是 null,而不會被悄悄當成 false。
["a", "b"]List<String>元素型別根據第一個元素推斷。混合型別的陣列會退回 List<Object>,而空陣列則完全無法推斷。
{ ... }NestedClass每個巢狀物件都會產生一個以其欄位命名的靜態內部類別。
nullObjectnull 不帶有任何型別資訊,因此會輸出 Object。確定實際型別後請自行替換。

巢狀物件與集合

巢狀結構會被轉換成以所屬欄位命名的靜態內部類別,因此貼上一次就能得到一個完整、可編譯的檔案,而不是一個只有 Object 欄位的扁平類別。

輸入的 JSON:

{
  "id": 41,
  "customer": { "name": "Ada", "email": "ada@example.com" },
  "items": [{ "sku": "A-1", "qty": 2 }]
}

產生的類別:

public class Order {
    private Integer id;
    private Customer customer;
    private List<Items> items;

    public static class Customer {
        private String name;
        private String email;
    }

    public static class Items {
        private String sku;
        private Integer qty;
    }
}

命名與集合的處理規則

  • 內部類別以其欄位命名,並將首字母大寫——customer 欄位會產生 Customer 類別。
  • 物件陣列會產生 List<T>,其中 T 是根據第一個元素產生的內部類別。
  • 巢狀會一直向下展開,每一層都會新增一個內部類別。
  • 不同層級上同名的欄位會解析成同一個類別名稱,如果它們結構不同,請重新命名其中一個。
  • 空陣列會得到 List<Object>,因為沒有元素可供推斷——請改為提供有內容的範例。

功能特點

可用功能

  • 可選的 Lombok 集成(@Data、@NoArgsConstructor、@AllArgsConstructor)
  • 智能 JSON 值類型推斷
  • 支持嵌套對象和數組
  • 適當的程式碼格式化和導入
  • JSON 驗證和錯誤檢查

使用技巧

使用建議

  • 生成類之前先驗證您的 JSON
  • 使用 Lombok 減少樣板程式碼
  • 使用反映數據結構的有意義類名
  • 遵循 Java 包命名約定(例如:com.example.model)
  • 對於複雜類型,考慮生成多個類

注意:轉換器生成具有適當封裝的標準 Java Bean 類。Lombok 註解可以顯著減少樣板程式碼的數量。

Rocks Dev Dock 發布了 🥳

在工具內按 '+' 將您喜歡的工具添加到您的 dock。

使用我們的工具時不會收集數據,只是工具。