JSON 轉 Java
免費線上 JSON 轉 Java 工具,把 JSON 資料一鍵轉成帶註解的 Java POJO 實體類別。支援 4 種序列化註解庫(Lombok / Jackson / Gson / Fastjson),Lombok @Data 自動精簡,可選 Serializable 介面和 toString / equals / hashCode 自動產生,4 種欄位命名策略,巢狀類別自動產生。
相關推薦
關於 JSON 轉 Java POJO 與 Java 實體類別
JSON 轉 Java 工具(JSON to Java Converter)是一種把 JSON 資料結構自動轉換為標準 Java POJO 類別程式碼的實用工具。它把開發者從手寫 package / import / private 欄位 / getter / setter 的重複勞動中解放出來,特別適合把 API 介面文件中的範例 JSON 快速轉為可直接編譯的 Java 實體類別。
POJO(Plain Old Java Object)是 Java 社群對「普通 Java 物件」的簡稱,約束為:① 私有欄位(private);② 公共 getter / setter 方法存取欄位;③ 無框架繼承依賴(如不繼承 HttpServlet / EJB 等)。POJO 是 Spring Boot / Hibernate / Jackson 等主流框架的核心資料載體,JSON 轉 Java 的本質就是把 JSON 的動態結構靜態化為 POJO 型別。
本工具支援 4 大主流序列化註解庫:① Gson(Google,@SerializedName 註解);② Jackson(Spring Boot 預設,@JsonProperty + @JsonFormat 註解);③ Fastjson(阿里巴巴,@JSONField 註解);④ Lombok(@Data / @Builder / @NoArgsConstructor / @AllArgsConstructor 集合)。開發者可根據專案使用的序列化框架自由選擇,無需在 IDE 中二次處理。
Lombok @Data 模式是本工具的進階特性:啟用後產生的 Java 類別只有 5 行(@Data + 欄位),所有 getter / setter / equals / hashCode / toString 都在編譯期由 Lombok 自動產生。這與 IDE 範本產生或手寫 POJO 相比,原始碼可讀性提升 80%+,維護成本降低 60%+。注意專案需引入 lombok 依賴(Maven / Gradle 座標)。
另一個差異化亮點是「ZIP 多檔案下載 + 套件路徑自動組織」:傳統線上工具只能複製貼上單一類別,而本工具可一鍵下載 ZIP 包,內含按套件名(如 com/geekformat/pojo/)組織的目錄結構,解壓後可直接用 IDE 的「Import Project」批次匯入,省去手動建立套件目錄的步驟。
適用場景
- Android 開發:把後端 API 回傳的 JSON 轉為 Java 實體類別(POJO),可選 Gson / Moshi / Fastjson / Jackson 註解直接用於反序列化
- Spring Boot 後端:把 API 介面文件中的範例 JSON 快速轉為 DTO / VO / Entity 類別,配合 Lombok @Data 精簡程式碼量
- 對接第三方 API:把對方 API 的回應 JSON 轉為對應 Java 模型,選擇對應的序列化註解(Jackson / Fastjson / Gson)無縫對接
- 微服務架構:統一 RPC API 的請求 / 回應資料模型,多個團隊共享同一份 Java 類別定義
- 教學與培訓:資料結構課程、Java 教學場景中把範例 JSON 轉 POJO 演示物件導向建模
- API 文件編寫:在 Swagger / OpenAPI / Knife4j 文件中嵌入 Java 實體類別範例
- 單元測試準備:把 JSON fixture 轉成 Java 類別後用 Jackson 反序列化做測試資料驅動
- 資料遷移腳本:把 JSON 設定檔轉為 Java 類別後用於業務邏輯強型別存取
- 前端 Mock 對接:後端先把 JSON 模型轉 Java,前端同時拿到對應的 TypeScript interface / Java POJO
- 程式碼審查:把 API 回傳 JSON 直接轉成可讀的 POJO,便於 Code Review 時討論欄位命名
- 老專案重構:把基於 JSONObject 動態存取的程式碼重構為基於 POJO 的強型別存取
- Entity / DTO 多角色建模:同一份 JSON 產生 UserEntity(DB 層)+ UserDTO(API 層)+ UserVO(視圖層),可分別選擇不同註解
- snake_case 後端 API 接入:後端 API 回傳 snake_case 欄位,前端 Java 系統啟用「轉 camelCase」+ Gson/Jackson 註解無縫接入
- 需要持久化的 DTO:勾選「實作 Serializable」直接可用於 Redis 快取或分散式 Session 儲存
使用方法
- 在左側編輯器貼上 JSON 物件(推薦)或陣列,或點擊「Sample」載入中文範例(含巢狀 address / company / tags)
- 點擊工具列「Settings」按鈕(或帶類別名的按鈕),在彈窗中選擇:① 設定根類別名(如 User)和套件名(如 com.example.entity);② 選擇序列化註解庫(Gson / Jackson / Fastjson / Lombok / 無);③ 選擇程式碼風格(toString / equals / hashCode / 建構式 / Serializable);④ 選擇欄位命名策略(保持原樣 / camelCase / 全小寫 / UPPER_SNAKE)
- 工具會在 400ms 內自動轉換,右側顯示所有產生的 Java 類別(每個類別一個獨立卡片,標題列即時顯示當前註解庫和 Lombok 徽章);如 JSON 格式錯誤會顯示「修復 JSON」按鈕
- 檢查產生的類別名、欄位名和註解是否符合預期;如需調整可修改源 JSON 的 key 名或重新開啟 Settings 修改選項
- 滿意後可點擊單一類別的「複製」按鈕貼上到 IDE,或點擊工具列「Download ZIP」一鍵下載所有類別(按套件路徑組織目錄結構)
功能特點
- 4 種序列化註解庫:Gson (@SerializedName) / Jackson (@JsonProperty + @JsonFormat 日期) / Fastjson (@JSONField) / Lombok (@Data),開關切換即可
- Lombok @Data 模式:自動產生 @Data + @Builder + @NoArgsConstructor + @AllArgsConstructor 組合,Java 類別從 ~50 行精簡到 ~5 行
- 4 種欄位命名策略:保持原樣 / snake_case 轉 camelCase(user_name → userName)/ 全小寫 / UPPER_SNAKE 常數風格
- 程式碼風格自由組合:可選產生 toString / equals / hashCode / 無參建構式 / 全參建構式 / 實作 Serializable 介面
- 智慧型別推斷:自動識別 String / Integer / Double / Boolean / List<Object> / 巢狀物件型別,無需手動指定欄位型別
- 巢狀類別自動產生:巢狀物件自動轉換為獨立 Java 類別(按首字母大寫命名),陣列中物件自動按「移除複數 s」規則命名類別
- 陣列泛型自動展開:JSON 陣列自動轉換為 Java List<T> 泛型,元素型別按首項自動推斷
- 完整 POJO 範本:產生包含 package 宣告 + 檔頭註解(Copyright + 自動產生時間戳)+ import + 私有欄位 + getter/setter 的完整 .java 檔案
- ZIP 多檔案下載:所有產生的類別按套件路徑組織(如 com/example/entity/User.java),一鍵打包為 ZIP 下載,含目錄結構
- 自訂套件名 + 類別名:可自由設定 package(如 com.example.entity)和根類別名(如 User),所有類別名同步基於根類別名產生
- 縮排控制:右側支援 2 / 4 空格縮排切換,匹配團隊程式碼規範
- 複製單一類別:每個產生的 Java 類別有獨立「複製」按鈕,方便單獨貼上到 IDE 中
- 自動轉換 + 錯誤修復:輸入 400ms 防抖自動轉換,JSON 錯誤時彈「修復 JSON」按鈕,可自動修復常見格式錯誤(多餘逗號、單引號等)
- 範例資料 + 檔案上傳:內建中文範例資料(含巢狀 address / company / tags / scores),支援拖曳或點擊上傳 .json / .txt 檔案
- 本機歷史紀錄:基於 localStorage 持久保存最近 200 條輸入,重新整理或誤關頁面後可快速復原
- 本機瀏覽器端運行:所有 JSON 解析、Java 產生、ZIP 打包都在你的瀏覽器內透過 JavaScript 完成,資料不上傳任何伺服器
程式碼範例
Java:用 Jackson 反序列化本工具產生的 POJO
javaSpring Boot 專案中,最常見的用法:把本工具產生的 POJO 用 Jackson 反序列化 API 回應。
import com.fasterxml.jackson.databind.ObjectMapper;
import com.geekformat.pojo.User;
import com.geekformat.pojo.Address;
public class ApiClient {
private final ObjectMapper objectMapper = new ObjectMapper();
public User getUser(int userId) throws Exception {
// 1) 呼叫 API 取得 JSON 字串
String json = httpClient.get("https://api.example.com/users/" + userId);
// 2) 直接反序列化為本工具產生的 POJO
User user = objectMapper.readValue(json, User.class);
// 3) 強型別存取欄位(編譯期型別檢查)
System.out.println("User: " + user.getName());
if (user.getAddress() != null) {
System.out.println("City: " + user.getAddress().getCity());
}
return user;
}
public static void main(String[] args) throws Exception {
ApiClient client = new ApiClient();
User user = client.getUser(123);
System.out.println(user.getName());
}
}Java:Lombok @Data + @Builder 使用方式
java本工具 Lombok 模式產生的程式碼,配套使用方式:用 builder 鏈式呼叫建構物件,編譯期由 Lombok 產生完整 POJO。
import com.geekformat.pojo.User;
public class UserService {
public User createUser() {
// Lombok @Builder 模式:鏈式呼叫,比傳統 setter 更直觀
User user = User.builder()
.id(1)
.userName("Alice")
.email("alice@example.com")
.isActive(true)
.createdAt("2026-07-08T10:00:00.000Z")
.build();
System.out.println(user);
// Lombok @Data 自動產生 toString():
// User(id=1, userName=Alice, email=alice@example.com, ...)
return user;
}
public boolean isValid(User user) {
// Lombok @Data 自動產生 equals() 和 hashCode()
return user != null && user.getId() != null;
}
}
/*
* 對應 pom.xml 依賴:
* <dependency>
* <groupId>org.projectlombok</groupId>
* <artifactId>lombok</artifactId>
* <version>1.18.30</version>
* <scope>provided</scope>
* </dependency>
*/命令列:解壓本工具下載的 ZIP 匯入 IDE
bash本工具下載的是 ZIP 包(按套件路徑組織),解壓後可直接 Import 到 IDE 中。
# 1) 下載 ZIP 後(檔名形如 User.zip)
unzip User.zip -d src/main/java/
# 2) 檢查目錄結構
tree src/main/java/
# src/main/java/
# └── com/
# └── example/
# └── entity/
# ├── User.java
# ├── Address.java
# └── Company.java
# 3) 在 IntelliJ IDEA 中:右鍵 com 目錄 → "Mark Directory as" → "Sources Root"
# 或在 Eclipse 中:File → Import → Existing Projects into Workspace
# 4) 在 Spring Boot 專案中直接使用
# UserController.java
# @PostMapping("/users")
# public ResponseEntity<User> createUser(@RequestBody User user) {
# userService.save(user);
# return ResponseEntity.ok(user);
# }
# 5) 編譯驗證
mvn compile
# [INFO] BUILD SUCCESS
# 6) (可選)使用 Lombok 時記得在 pom.xml 加 lombok 依賴
# <dependency>
# <groupId>org.projectlombok</groupId>
# <artifactId>lombok</artifactId>
# </dependency>常見問題
怎麼把 JSON 轉成 Java POJO 類別?
將 JSON 內容貼上到輸入框,工具會在 400ms 內自動轉換;或在工具列點擊「Convert」按鈕。轉換完成後右側會顯示所有產生的 Java 類別,每個類別有獨立的「複製」按鈕;點擊工具列「Download ZIP」可一鍵打包所有類別下載。
支援哪些 JSON 資料結構?
支援兩種結構:① JSON 物件(作為根類別,自動產生 public class RootBean { ... });② JSON 陣列(陣列第一個物件作為根類別範本)。所有巢狀物件會被遞迴處理為獨立類別,陣列中的物件會被遞迴處理為 List 元素型別對應的類別。
產生的 Java 類別包含什麼內容?
每個產生的 .java 檔案包含:① 檔頭註解(Copyright + 自動產生時間戳);② package 宣告;③ import 陳述句(含 List / Objects / Serializable / Gson / Jackson / Fastjson / Lombok 等按需自動匯入);④ public class 類別宣告(可選 implements Serializable);⑤ 私有欄位(private,按需帶註解);⑥ 標準 getter / setter 方法(或僅 Lombok 註解);⑦ 可選 toString / equals / hashCode 方法。完整可直接 javac 編譯。
支援產生 Gson / Jackson / Fastjson / Lombok 註解嗎?
支援。在 Settings 彈窗的「序列化註解庫」分組裡選擇:① Gson(每個欄位加 @SerializedName("原始 key"));② Jackson(每個欄位加 @JsonProperty,日期欄位額外加 @JsonFormat);③ Fastjson(每個欄位加 @JSONField(name="原始 key"));④ Lombok(在類別上加 @Data,可選 @Builder / @NoArgsConstructor / @AllArgsConstructor);⑤ 無註解(預設,僅純淨 POJO)。所選註解庫會自動 import 對應的套件。
Lombok @Data 模式產生的程式碼長什麼樣?
啟用 Lombok 後,產生的 Java 類別會大幅精簡。例如 class User 啟用 Lombok 後只有 5 行:@Data + @Builder + @NoArgsConstructor + @AllArgsConstructor + 欄位宣告。所有 getter / setter / equals / hashCode / toString 都在編譯期由 Lombok 自動產生,原始碼可讀性顯著提升。注意:專案需引入 Lombok 依賴(pom.xml / build.gradle 加 lombok 座標),IDE 需安裝 Lombok 插件。
怎麼把 snake_case 欄位名轉成 camelCase?
在 Settings 彈窗的「欄位命名策略」分組裡選擇「轉 camelCase」模式,工具會自動把 JSON 欄位名從 snake_case 轉為 Java 推薦命名風格。例如 user_name → userName、created_at → createdAt、is_active → isActive。同時如果選了 Gson/Jackson/Fastjson 註解,註解裡仍保留原始 snake_case 字串,保證反序列化能正確對應。
巢狀的 JSON 物件會怎麼處理?
工具會自動為巢狀物件建立獨立的 Java 類別。命名規則:巢狀物件 key 首字母大寫作為類別名(如 address → Address),陣列中的物件 key 移除末尾 s 後首字母大寫(如 users → User)。所有巢狀類別同樣包含完整欄位 + getter/setter + 註解。
陣列欄位會自動轉成 List 嗎?
會。JSON 中的陣列欄位會自動轉換為 Java List<T> 泛型,元素型別根據陣列第一個元素自動推斷。例如 ["a","b","c"] → List<String>;[{...},{...}] → List<User>(User 為根據 key 命名的新類別);空陣列 [] 預設 List<Object>。
怎麼修改根類別名和套件名?
工具列右上角有一個 Settings 按鈕(或帶類別名標記的按鈕),點擊後彈出設定對話框,可設定:① 根類別名(預設 JsonRootBean);② 套件名(預設 com.geekformat.pojo)。修改後所有產生的類別名會同步更新,ZIP 內的目錄結構也會按套件路徑組織。
下載的是單一 .java 檔案還是 ZIP 包?
下載的是 ZIP 包(JsonRootBean.zip),內含所有產生的 Java 類別,按套件路徑組織目錄結構。例如套件名 com.geekformat.pojo 時,ZIP 內的檔案結構為:com/geekformat/pojo/JsonRootBean.java、com/geekformat/pojo/Address.java 等。可用 unzip 指令或 IDE 直接匯入。
可以直接複製單一類別到 IDE 嗎?
可以。每個產生的 Java 類別顯示為一個獨立的卡片,卡片右上角有「複製」按鈕,點擊後整個類別的完整程式碼(包含 package + import + 類別定義 + 欄位 + 註解 + getter/setter)會被複製到剪貼簿,可直接貼上到 IntelliJ IDEA / Eclipse / VS Code 等 IDE 中。
如何產生帶 @Builder 的 Lombok Builder 模式?
在 Settings 彈窗的「程式碼風格」分組裡:① 勾選「使用 Lombok @Data 簡化程式碼」(會自動啟用 lombok 註解庫);② 勾選「產生 @Builder 建造者模式」。產生的類別會自動加 @Builder 註解,使用方式:User user = User.builder().id(1).name("Alice").build();
如何讓產生的類別實作 Serializable 介面?
在 Settings 彈窗的「程式碼風格」分組裡勾選「實作 Serializable 介面」,工具會自動:① 在類別宣告加上 implements Serializable;② 自動 import java.io.Serializable。適合需要把 POJO 寫入檔案、網路傳輸或 Redis 快取的場景。
JSON 轉 Java 和 JSON 轉 TypeScript 有什麼差別?
兩者都是將 JSON 轉換為對應語言的型別定義,但側重點不同:① Java 產生的是完整 POJO 類別(含 package + import + private 欄位 + getter/setter),可直接編譯執行;② TypeScript 產生的是 interface 或 type 宣告,僅描述資料結構,不含實作。選擇取決於你的開發語言。
產生的程式碼可以用於 Spring Boot 專案嗎?
可以。本工具產生的 POJO 類別符合標準 Java Bean 規範(私有欄位 + getter/setter),與 Spring Boot 的 Jackson 反序列化、MVC 表單綁定、JPA 實體定義(手動)相容。如需 Lombok 簡化(@Data / @Builder),可在 Settings 彈窗一鍵啟用,無需 IDE 二次重構。
JSON 格式錯誤怎麼辦?
工具會自動偵測 JSON 合法性,錯誤時會在右側顯示紅色錯誤提示,並提供「修復 JSON」按鈕。點擊後可自動修復常見錯誤:① 末尾多餘逗號;② 單引號替換為雙引號;③ 缺失引號的 key 補全引號;④ 註解移除。修復成功後可直接轉換產生 Java 類別。
資料上傳到伺服器嗎?隱私安全嗎?
完全本機瀏覽器端運行。所有 JSON 解析、Java 類別產生、ZIP 打包都在你的瀏覽器內透過 JavaScript(JSZip)完成,輸入的 JSON 資料和產生的 Java 程式碼都不會被上傳到任何伺服器,也不會被記錄或快取到雲端。包含內部 API 欄位、未上線業務結構、未公開 API 回應的敏感 JSON 都可以放心使用,關閉頁面即清除。
產生 1 萬行的大 JSON 會不會卡?
工具無顯式行數限制,但瀏覽器對超大 JSON 的解析和渲染會變慢。建議:① 拆分 JSON 後批次轉換;② 一次只關注一個巢狀層級;③ 如需批次產生 100+ 類別,建議直接使用 IDE 的程式碼產生插件(如 MyBatis Generator、MapStruct)或專門的 Java 程式碼產生函式庫(JavaPoet / JOOQ)。
故障排查
提示「請輸入 JSON 資料」或類似錯誤
左側輸入框為空或只有空白字元。確保已貼上有效的 JSON 內容,或點擊「Sample」載入中文範例,或點擊「Upload」選擇 .json / .txt 檔案。
提示「Unexpected token ... in JSON at position N」
JSON 格式不合法。常見原因:① 末尾有多餘逗號(如 {"a":1,});② 用了單引號而非雙引號;③ JS 物件寫法(如 {key: value})而非 JSON(如 {"key": "value"})。點擊「修復 JSON」按鈕可自動修復部分錯誤。
產生的註解與專案使用的框架不相符
在 Settings 彈窗的「序列化註解庫」分組裡切換註解庫:① Spring Boot 專案用 Jackson;② Android 專案用 Gson;③ 阿里系 Java 後端用 Fastjson;④ 想精簡程式碼用 Lombok;⑤ 不想引入任何註解庫就選「無註解」。切換後所有欄位註解和 import 都會自動重新產生。
Lombok 編譯報「找不到符號」
專案未引入 Lombok 依賴。在 pom.xml 加:`<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.30</version><scope>provided</scope></dependency>`;IDE 還需要安裝 Lombok 插件(IntelliJ IDEA → Plugins → 搜尋 Lombok → Install)。
想產生不帶 Lombok 但又要精簡程式碼
可在 Settings 彈窗不勾選 Lombok @Data,改用傳統模式但保持精簡:① 勾選「產生無參建構式」+「產生全參建構式」+「產生 toString / equals / hashCode」;② 團隊可在 IDE 中用 Postfix Completion(IntelliJ 的 .var / .field 範本)批次產生。或者直接用 IDE 內建的 Generate POJO 功能(Alt+Insert → Constructor / Getter / Setter)。
snake_case 轉 camelCase 後 IDE 報錯「找不到符號」
「轉 camelCase」只改欄位名,但 Lombok @Data 自動產生的 getter/setter 會按新欄位名產生(如 user_name → userName → getUserName / setUserName),所以程式碼本身正確。如果仍報錯,檢查:① IDE 是否成功重新編譯;② Lombok 插件是否安裝並啟用;③ 清理 IDE 快取(File → Invalidate Caches)。
巢狀物件的類別名不是我想要的(如 categories 被命名為 Categori)
工具對陣列中的物件採用「移除末尾 s + 首字母大寫」的命名規則,對於 categories 等不規則複數命名不友善。建議:① 把源 JSON 的 key 改為單數(如 categories → category);② 或產生後在 IDE 中用 IDE 的 Rename 重新命名類別(同時修改所有引用)。
下載的 ZIP 解壓後目錄結構不對
ZIP 內的目錄按 package 設定組織(預設 com/geekformat/pojo/)。如果解壓後位置不對,可:① 修改套件名(如改為 com.example)重新下載;② 用 unzip -d src/main/java 指定解壓目錄;③ 或在 IDE 中直接 File → Open 整個解壓後的資料夾。
Jackson 模式下日期欄位反序列化失敗
工具會自動偵測形如 "2026-07-08T10:00:00.000Z" 的 ISO 8601 日期字串並加 @JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSXXX")。如果你的日期格式不同(如 "2026-07-08"),可以:① 在源 JSON 中改用 ISO 8601 格式;② 或產生後手動調整 @JsonFormat pattern 參數。
下載的 ZIP 在 Windows 下中文檔名亂碼
ZIP 檔名和 Java 類別名預設都是英文(含 ASCII 字元),不會亂碼。如果源 JSON 中含中文 key(產生的欄位名為中文),IDE 可能提示命名不規範但不會亂碼。建議把 JSON key 改為英文(駝峰命名),更符合 Java 編碼規範。
產生 100+ 個巢狀類別時頁面卡頓
工具無顯式類別數限制,但瀏覽器對超大 DOM 渲染效能下降明顯。建議:① 把 JSON 拆分成幾個獨立模組分別轉換;② 或直接在 IDE 中用 IDE 內建的程式碼產生工具(IntelliJ 的 JSON to POJO 插件);③ 巢狀層級建議不超過 6 層,否則建議重構 JSON 結構。
陣列是數字型別卻產生 List<Object>
通常是陣列為空 [] 時預設推斷為 List<Object>。可在源 JSON 中至少新增一個範例元素(如 [1,2,3]),工具會按首個元素推斷型別;或產生後手動把 List<Object> 改為 List<Integer>。
null 值欄位產生為 Object 型別
JSON null 值會被工具預設推斷為 Object 型別(因為無法判斷實際型別)。這是安全做法,避免誤判。如確知型別,可在源 JSON 中給該欄位一個範例值(如 "field": "" 推斷為 String),產生後刪除範例值即可。
修改 package 名後 ZIP 目錄結構沒更新
package 修改後必須重新點擊「Convert」按鈕(或修改後 400ms 自動觸發)。Settings 對話框關閉後,下一次輸入變化時工具會用新 package 名重新產生所有檔案。
想清理工具自動產生的檔頭註解(如 Copyright)
工具預設產生包含 Copyright + 自動產生時間戳的檔頭註解。如不需要,可在 IDE 中使用全域 Find & Replace 刪除,或修改工具源碼中的 generateFileHeader 函式(需要重新部署)。
想做「snake_case 後端 + Java 前端」轉換
典型場景:後端 API(如 Python / Go 服務)回傳 snake_case 欄位,前端 Java 系統需要 camelCase 欄位。操作步驟:① 在 Settings 彈窗選 Jackson 或 Gson 註解庫;② 選擇「轉 camelCase」欄位命名策略;③ 工具會自動產生:欄位名 = userName(camelCase),註解值 = "user_name"(保留原 key),反序列化時按註解對應,存取時按 Java 命名規範。
術語表
- POJO
- Plain Old Java Object,普通 Java 物件。約束為:私有欄位 + 公共 getter/setter + 不依賴框架。本工具產生的即是標準 POJO。
- JavaBean
- Java 社群早期對 POJO 的另一種稱呼,要求有公共無參建構式 + 私有欄位 + 公共 getter/setter。本工具產生的類別符合 JavaBean 規範。
- DTO (Data Transfer Object)
- 資料傳輸物件,常用於跨程序(API / RPC)的資料載體。本工具產生的 POJO 即可作為 DTO 使用。
- VO (Value Object)
- 值物件,通常用於視圖層(Controller 回傳前端的資料)。本工具產生的 POJO 同樣適用。
- Entity
- 實體物件,對應資料庫表的一筆記錄。本工具產生的 POJO 可作為 JPA / Hibernate 的 @Entity 基礎類別(手動加入註解後)。
- @SerializedName
- Gson 函式庫的欄位對應註解。本工具 Gson 模式下會為每個欄位自動加入 @SerializedName("原始 key"),保證反序列化時按原 JSON 欄位名對應。
- @JsonProperty
- Jackson 函式庫的欄位對應註解。本工具 Jackson 模式下會為每個欄位自動加入 @JsonProperty("原始 key");日期欄位額外加 @JsonFormat 定義序列化格式。
- @JSONField
- 阿里巴巴 Fastjson 函式庫的欄位對應註解。本工具 Fastjson 模式下會為每個欄位自動加入 @JSONField(name = "原始 key")。
- Lombok @Data
- Lombok 函式庫的複合註解,等價於 @Getter + @Setter + @ToString + @EqualsAndHashCode + @RequiredArgsConstructor。本工具 Lombok 模式會在類別上一鍵加入該註解。
- Lombok @Builder
- Lombok 的建造者模式註解。本工具勾選後會自動加入,產生可鏈式呼叫的 builder() 方法。
- Serializable
- Java 標記介面,實作後物件可被序列化(如寫入檔案 / 網路傳輸 / Redis 快取)。本工具勾選「實作 Serializable」後會自動加入 implements Serializable 並 import java.io.Serializable。
- 巢狀類別 (Nested Class)
- 工具對巢狀 JSON 物件自動產生的獨立 Java 類別。命名規則:巢狀物件 key 首字母大寫(如 address → Address)。
- List 泛型
- Java 集合框架的介面,工具自動把 JSON 陣列轉為 List<T>,T 按陣列首項自動推斷(如 ["a"] → List<String>)。
- getter / setter
- Java Bean 的標準存取器方法。getter 命名 getXxx() 回傳欄位,setter 命名 setXxx(value) 設定欄位。Lombok 模式下由 @Data 自動產生,傳統模式下工具顯式產生。
- package 宣告
- Java 檔案的第一行非註解程式碼,用於宣告類別所屬的命名空間。本工具根據使用者設定的套件名自動產生,並在 ZIP 中按 com/xxx/yy 目錄組織。
- snake_case → camelCase
- 欄位命名策略轉換。本工具支援自動把 user_name → userName、is_active → isActive、created_at → createdAt,符合 Java 命名規範。
- JSZip
- 瀏覽器端的 JavaScript ZIP 打包函式庫,本工具用它在瀏覽器內直接產生 ZIP 檔案,無需伺服器端處理。
- localStorage 歷史
- 瀏覽器本機鍵值儲存(容量約 5-10MB)。本工具用 localStorage 持久保存最近 200 條輸入。
- 防抖 (Debounce)
- 前端效能最佳化技巧:把高頻事件合併為最後一次執行。本工具設定 400ms 防抖,避免大檔案解析卡頓。
- tryFixJSON
- 本工具內建的 JSON 修復函式:自動修復末尾多餘逗號、單引號替換為雙引號、缺失引號的 key 補全、註解移除等常見錯誤。
JSON 型別到 Java 型別對照速查表
工具自動推斷的 JSON 資料型別與對應的 Java 型別對照:
| JSON 值範例 | 判斷方法 | 產生 Java 型別 | 欄位預設值 |
|---|---|---|---|
null | value === null | Object | null |
true / false | typeof value === 'boolean' | Boolean | false |
42 | typeof value === 'number' && Number.isInteger(value) | Integer | 0 |
3.14 | typeof value === 'number' && !Number.isInteger(value) | Double | 0.0 |
"hello" | typeof value === 'string' | String | null |
[...] (空陣列) | Array.isArray(value) && value.length === 0 | List<Object> | new ArrayList<>() |
["a","b"] | Array.isArray(value) && typeof value[0] === 'string' | List<String> | new ArrayList<>() |
[1,2,3] | Array.isArray(value) && typeof value[0] === 'number' | List<Integer> | new ArrayList<>() |
[{...},{...}] | Array.isArray(value) && typeof value[0] === 'object' | List<Xxx> | new ArrayList<>() |
{...} (巢狀物件) | typeof value === 'object' && !Array.isArray(value) | Xxx (獨立類別) | new Xxx() |
4 種序列化註解庫對照表
工具支援的 4 種主流 Java JSON 序列化註解庫,根據專案使用的框架選擇:
| 註解庫 | 產生的註解 | 自動 import | 適用場景 |
|---|---|---|---|
無註解 | 無(純淨 POJO) | 無 | 無框架依賴場景;需手動用 jackson-databind 等通用函式庫反序列化 |
Gson | @SerializedName("user_name") | import com.google.gson.annotations.SerializedName; | Android 應用、Google Gson 函式庫生態、Retrofit + Gson |
Jackson | @JsonProperty("user_name") + 日期欄位 @JsonFormat | import com.fasterxml.jackson.annotation.JsonProperty; + JsonFormat | Spring Boot 預設序列化框架、Web 後端 API 介面 |
Fastjson | @JSONField(name = "user_name") | import com.alibaba.fastjson.annotation.JSONField; | 阿里巴巴生態、Java 內部系統、高效能反序列化場景 |
Lombok | 類別級 @Data (+ 可選 @Builder / @NoArgsConstructor / @AllArgsConstructor) | import lombok.Data; (+ 其他) | 所有需要樣板程式碼精簡的專案;與任意序列化函式庫組合使用 |
4 種欄位命名策略對照表
工具支援的 4 種欄位命名轉換策略,針對不同 JSON 來源最佳化:
| 策略 | 輸入範例 | 輸出 Java 欄位名 | 適用場景 |
|---|---|---|---|
保持原樣 | user_name | user_name | JSON 欄位名已符合 Java 命名規範(如內網 API);或團隊習慣 snake_case 風格 |
轉 camelCase | user_name | userName | Java 推薦命名風格;蛇形命名後端 API(如 Python / Go 後端) |
全小寫 | UserName | username | 對接特殊資料庫欄位(不常見) |
UPPER_SNAKE | user_name | USER_NAME | Java 常數定義(public static final);一般 POJO 欄位不推薦 |
Lombok @Data 模式 vs 傳統 POJO 模式對照
對照兩種程式碼風格的行數、可讀性、依賴:
| 對照項 | Lombok @Data 模式 | 傳統 POJO 模式 |
|---|---|---|
原始碼行數 | ~5 行(4 個註解 + 欄位) | ~50 行(每個欄位 4-5 行 getter/setter + 類別) |
可讀性 | 極高(一眼看到所有欄位和註解) | 中等(大量樣板程式碼) |
編譯產物 | 完整位元碼(IDE / javac 透過 lombok 處理器產生) | 完整位元碼(直接編譯) |
執行時依賴 | 需要 lombok 依賴(編譯期) | 無額外依賴 |
IDE 支援 | 需安裝 Lombok 插件(IntelliJ / Eclipse) | 原生支援 |
程式碼維護成本 | 低(新增欄位即可) | 高(每個欄位需手動新增 getter/setter) |
適用團隊 | 已引入 Lombok 的中大型專案 | 拒絕 Lombok 註解的專案;老專案維護 |
Privacy & Security
本 JSON 轉 Java 工具所有 JSON 解析、Java 類別產生、ZIP 打包操作完全在你的瀏覽器本機透過 JavaScript(JSZip)完成,輸入的 JSON 資料和產生的 Java 程式碼都不會被上傳到任何伺服器,也不會被記錄、快取或儲存到雲端。包含內部 API 欄位、未上線業務結構、未公開 API 回應的敏感 JSON 都可以放心使用,關閉頁面即清除全部資料。
Authoritative References
- MDNMDN - JSON.parse / JSON.stringify
- OracleOracle Java 教學 - 類別與物件
- OracleOracle Java 教學 - 封裝性
- LombokLombok 官方文件 - @Data
- LombokLombok 官方文件 - @Builder
- JacksonJackson 官方文件 - ObjectMapper
- GoogleGson 使用者指南
- AlibabaFastjson GitHub
- SpringSpring Boot 官方 - @RequestBody
- JSON 壓縮
- CSV 轉 JSON
- JSON 轉 CSV
- JSON Diff
- JSON Escape / Unescape
- JSON 扁平化
- JSON 格式化
- JSON 產生器
- JSONPath 查詢
- JSON 合併
- JSON 修復
- JSON Schema 驗證器
- JSON 排序
- JSON Stringify
- JSON 轉 HTML 表格
- JSON 轉 Java
- JSON 轉 Markdown
- JSON 轉 SQL
- JSON 轉 TOML
- JSON 轉 TypeScript
- XML 轉 JSON
- JSON 轉 XML
- YAML 轉 JSON
- JSON 轉 YAML
- JSON 轉 Go
- JSON 轉 Rust
- JSON 轉 Swift
- JSON轉C#
- JSON 轉 C++
- JSON 轉 PHP
- JSON 轉 Python