JSON 轉 TypeScript
貼上 JSON 即生成 TypeScript 型別:巢狀物件自動提取為獨立 interface、陣列元素合併為聯合型別、缺失欄位自動標可選;支援 interface / type / zod schema 三種輸出與 camelCase、snake_case 等欄位命名,解析失敗時給出行列位置。
自動識別物件、陣列、數字、布林、null,陣列元素型別會合併為聯合型別
嵌套物件自動提取為獨立 interface,陣列內物件命名為「欄位名Item」
| JSON 值 | TypeScript | 說明 |
|---|---|---|
"abc" | string | 雙引號字串 |
1 / 1.5 | number | 整數與小數 |
true | boolean | true / false |
null | null | 輸出 null 或合併為可選 |
[1,2] | number[] | 元素型別 + [] |
[] | unknown[] | 空陣列輸出 unknown[] |
{"a":1} | A | 提取為獨立 interface |
[1,"a"] | number | string | 多型別合併為聯合 |
使用說明
工具介紹
介面文件裡給一段 JSON 樣本,前端要 TypeScript 型別,後端可能是 Go 的 struct、Python 的 dataclass、Rust 的 serde 結構,驗證層還要 zod。本工具從同一段樣本一次產生六種形態,欄位名與可選性保持一致,不會出現前端叫 userName、後端叫 user_name 的漂移;巢狀物件自動提成獨立型別,陣列內物件依「欄位名Item」命名。
功能特點
- 六種輸出:interface、type 別名、zod schema、Go struct、Rust serde、Python dataclass
- 欄位命名四檔:保持原樣、camelCase、PascalCase、snake_case
- 缺失欄位設為可選:樣本中未出現的鍵以可選屬性處理,而不是編造值
- 巢狀物件自動抽取為獨立型別,陣列元素合併為聯合型別
- 錯誤定位到行列:解析失敗時給出第幾列第幾欄與上下文片段
- 根型別名可自訂,縮排 2/4 空格可選,支援複製全部與下載 .ts 檔案
使用方式
- 把 JSON 貼進輸入框,或點「範例」載入一段含巢狀與陣列的樣本
- 填「根型別名」(預設 Root),選擇縮排與輸出形式
- 依需要開啟「加 export」「缺失欄位設為可選」,選擇欄位命名規則
- 點「產生型別」,在結果區看到全部型別定義
- 用「複製全部」取走程式碼,或「下載 .ts」存成檔案
注意事項
- 輸出基於單一樣本:樣本裡沒有出現的欄位不會被推斷出來,真實介面請用涵蓋最全的一筆回應;六種方言共用同一份欄位與可選性。
- 同一欄位跨記錄出現多種型別時合併為聯合型別(如 number | string);空陣列只能給 unknown[],需依實際資料手工補全元素型別。
- 可選欄位輸出為 key?: type,語意是鍵可能不存在,與值為 null 不同;日期字串保持 string,避免寫入時區與格式假設。
- zod 輸出需自行安裝依賴,Go 輸出帶 json tag,Rust 輸出帶 serde 屬性但需引入 serde 依賴,Python dataclass 會改寫非法識別字並保留原鍵註解。
- 解析失敗會給出列欄位置便於定位漏逗號;數值統一以 number 處理,不區分 int64 與 float;只做型別產生,不做驗證執行與 schema 版本比對。