這個工具的用途
使用步驟
貼上 JSON(或載入範例),即可在右側讀到 Java POJO。在選項面板設定 package name,使檔案與你的原始碼樹一致。
輸入: {"id":42,"name":"devsmiths","createdAt":"2024-03-11T08:24:00Z","stars":1280,"public":true,"contributors":[{"login":"ada","commits":51,"admin":true},{"login":"linus","commits":33,"admin":false}],"homepage":null}
限制與邊界情況
- 單樣本推論:你樣本中出現的每個欄位都會成為型別的一部分。樣本中不存在的欄位不會自動變成 optional——若每個欄位都應為 nullable,請在選項面板切換 all optional。
- 產生的程式碼是起點。命名遵循各語言慣例,但通常你會想手動重新命名型別並收緊聯合型別。
- 第一次產生需 1–3 秒,因為 quicktype 引擎下載到 Web Worker。後續產生幾乎即時。
- 非 TypeScript 目標在編輯器面板中沒有語法高亮(Go / Python / Rust 等的 CodeMirror 語言套件未打包以保持頁面輕量)。Copy / Download 仍能輸出正確的檔案內容。
- 輸入必須為合法 JSON——若含尾隨逗號、單引號或註解,請先用JSON Repair;若只是想快速檢查,可用Validator。
- 延伸閱讀:實務上的 JSON 轉 TypeScript——完整工作流程,包含重新命名與收緊步驟。
常見問題
- 支援哪些語言?
- 八種:TypeScript、Go、Python、C#、Rust、Java、Swift、Kotlin。可從上方分頁切換——URL 會變為 /json/types/<language>,輸出會就地重新產生。
- 為什麼第一次產生會比較慢?
- quicktype 引擎(約 700 KB)會在首次使用時載入 Web Worker。之後在本次 session 中就被快取——後續產生幾乎是即時。
- 我的 JSON 會被上傳嗎?
- 不會。產生器完全在你的瀏覽器內的 Web Worker 中運作。資料不會傳送到伺服器。
- 可以使用多份 JSON 樣本嗎?
- 目前還不行——目前版本只從單一樣本推論型別,因此樣本中不存在的欄位會以「以觀察到的型別為必填」處理。多樣本推論(聯合型別、跨樣本的選用偵測)已在 roadmap 上。
- 會產生序列化程式碼嗎?
- 在目標語言支援的情況下:Go 會帶 `json:` tag、Rust 會帶 serde derives、Java 會帶 Jackson annotations、C# 會帶 attributes、Swift 符合 Codable。TypeScript 輸出純 interface。若每個欄位都應為 nullable,可切換「all optional」。
- 輸出不完美——可以修嗎?
- 可以——請把輸出當成起點。重新命名型別、收緊聯合、明確標記 nullable。產生器具有保守的觀點;命名與意圖人類永遠勝出。