程式碼遷移:JSON To Java類
根據 JSON 生成 Java 類:頁面以 Kotlin 模式執行 json_typegen(WebAssembly),再把每個 data class 改寫為帶私有欄位、全參建構函式、getter 和 setter 的 Java 類。
建立用 Jackson 反序列化 REST 響應的 POJO。
適用場景
- 建立用 Jackson 反序列化 REST 響應的 POJO。
- 根據示例資料為 Spring 控制器草擬 DTO 類。
使用方法
- 將 JSON 物件或陣列貼上到左側編輯器。
- 檢視生成的類:根類為 Root,巢狀物件會成為以其鍵名命名的獨立類。
- 分別複製到各自的 .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 或巢狀類。