跳到主要內容

程式碼遷移:JSON To Java類

根據 JSON 生成 Java 類:頁面以 Kotlin 模式執行 json_typegen(WebAssembly),再把每個 data class 改寫為帶私有欄位、全參建構函式、getter 和 setter 的 Java 類。

建立用 Jackson 反序列化 REST 響應的 POJO。

JSON

適用場景

  • 建立用 Jackson 反序列化 REST 響應的 POJO。
  • 根據示例資料為 Spring 控制器草擬 DTO 類。

使用方法

  1. 將 JSON 物件或陣列貼上到左側編輯器。
  2. 檢視生成的類:根類為 Root,巢狀物件會成為以其鍵名命名的獨立類。
  3. 分別複製到各自的 .java 檔案中(已包含 List 和 Jackson 的 import),必要時調整型別。

JSON

{
  "id": 42,
  "user_name": "ada",
  "active": true,
  "tags": ["admin", "editor"]
}

Java 類

import java.util.List;
import com.fasterxml.jackson.annotation.JsonProperty;

public class Root {
	private Long id;
	@JsonProperty("user_name")
	private String userName;
	private Boolean active;
	private List<String> tags;

	public Root(Long id, String userName, Boolean active, List<String> tags) {
		this.id = id;
		this.userName = userName;
		this.active = active;
		this.tags = tags;
	}

	public Long getId() {
		return this.id;
	}

…

功能與限制

生成在瀏覽器中通過 WebAssembly 進行;沒有設定項。

snake_case 鍵變為帶 Jackson @JsonProperty 的 camelCase 欄位;用到時會匯入 Jackson 和 java.util.List。

數字對映為 Long 或 Double,布林值對映為 Boolean;布林 getter 使用 get 而不是 is。

null 值的型別為 Object,全為 null 的陣列為 List<?>。瞭解實際資料後,請替換為具體型別。

FAQ

能轉換根節點為陣列的 JSON 嗎?

可以。根會變為帶 List<Root2> 欄位的包裝類 Root,陣列元素變為類 Root2。

會處理可選欄位嗎?

能檢測到部分陣列元素中缺失的鍵,但 Java 輸出會去掉可選標記,因此每個欄位都是普通的可為 null 的包裝型別。

會生成 Lombok 註解或 record 嗎?

不會。只生成帶顯式建構函式、getter 和 setter 的普通類。

null 值是什麼型別?

示例中為 null 的欄位會變為 Object(private Object note;),因為無法推斷出具體型別。提供含實際值的示例,即可得到 String、Long 或巢狀類。

規範與參考資料