跳至主要內容
SPCXTools

JSON 轉 TypeScript

即時將 JSON 資料轉換為 TypeScript 介面或型別,支援自訂 Root 名稱與匯出選項。

本機執行 — 檔案絕不會離開您的裝置

正在載入工具…

如何使用 JSON 轉 TypeScript

  1. 1在輸入框貼上或輸入您的 JSON 物件或陣列。您也可以點擊「範例」來查看運作方式。
  2. 2設定最上層物件的 Root 名稱(預設為 "Root")。
  3. 3選擇要產生 TypeScript 介面 (interface) 還是型別別名 (type alias),並可切換是否加入 export 關鍵字。
  4. 4將產生的 TypeScript 程式碼複製到剪貼簿,或下載為 .ts 檔案。

快速且注重隱私的 JSON 轉 TypeScript 轉換工具

在 TypeScript 專案中處理外部 API、複雜的設定檔或文件資料庫時,手動編寫型別定義既繁瑣又容易出錯。這款免費的線上 JSON 轉 TypeScript 轉換工具能將任何有效的 JSON 物件或陣列,即時轉換為強型別的 TypeScript 定義。

由於此工具完全在您的瀏覽器中於本地端執行,您的資料絕不會上傳至伺服器。您可以安心貼上專屬的 API 回應、內部資料庫匯出檔或敏感的設定資料,完全不必擔心資料隱私問題。當您輸入或貼上內容時,轉換會即時完成,讓您能快速迭代開發。

彈性地從 JSON 產生 TypeScript 型別

每個程式碼庫都有專屬的風格指南與規範。本工具提供多種設定選項,確保產生的結果完全符合您的專案需求:

自訂根名稱: 預設情況下,最上層物件會命名為 Root。您可以輕鬆將其更改為符合您領域模型的名稱,例如 UserResponse、AppConfig 或 ProductList。

Interface 與 Type: 您可以選擇要產生 JSON 轉 TS 的 interface(介面)還是 type alias(型別別名)。在物件導向模式中,通常會優先使用 Interface 來定義物件結構,因為它支援宣告合併且易於擴充。而 Type 則具備高度彈性,常在函數式程式設計模式中使用。本工具讓您只需一鍵即可輕鬆切換。

Export 關鍵字: 勾選 export 核取方塊,即可在產生的型別前自動加上 export 關鍵字,讓這些型別能立即匯入到應用程式的其他模組中使用。

可選的 Null: 在許多 JSON API 中,缺失或未定義的值會以 null 表示。在嚴格的 TypeScript 環境下,您通常會將這些欄位標記為可選(使用 ?: 語法),而不是強制規定必須為 null 型別。勾選「Optional null」核取方塊即可自動處理此模式,省去手動為大量欄位加上問號的麻煩。

JSON 轉型別推斷的運作方式

當您提供 JSON 資料時,轉換器會深入分析數值,推斷出正確的 TypeScript 基本型別。字串、數字與布林值會直接對應至相應的 TypeScript 型別。巢狀物件則會透過遞迴處理,轉換為巢狀介面或行內物件型別,確保您的資料結構從上到下都保有嚴格的型別定義。

對於陣列,本工具會檢查內部的元素以判斷最準確的型別。若陣列包含相同型別的資料,會產生如 string[] 或 number[] 的簡單陣列型別;若包含混合資料型別,則會智慧地建立聯合型別,例如 (string | number)[]。如果陣列完全為空,由於沒有資料可供推斷更明確的型別,因此會預設為 any[]。

常見使用情境

串接 REST API: 串接新的 API 端點時,通常會收到龐大且結構深層的 JSON 回應。將該回應貼入轉換器,就能立即產生所需的介面 (interface),為你的 fetch 或 axios 請求定義型別。這能讓 IDE 提供嚴格的型別檢查與完善的自動完成功能,避免因屬性名稱拼錯而導致執行時期錯誤。

遷移 JavaScript 專案: 如果你正將舊有的 JavaScript 程式碼庫逐步遷移至 TypeScript,可以使用現有的 JSON 設定檔或 mock 資料,快速建構出資料模型,無須從頭手寫。

搭配 NoSQL 資料庫: 像 MongoDB 這類的文件型資料庫,通常會回傳複雜的 JSON 結構。為這些文件產生型別,可確保應用程式邏輯安全地處理資料,並確實符合資料庫的 schema。

獲得最佳結果的技巧

  • **確保 JSON 格式完全正確:**與標準的 JavaScript 物件不同,JSON 要求所有的鍵 (keys) 和字串值都必須使用雙引號,且不允許有結尾逗號。如果您的資料較為混亂,或是屬於 JavaScript 物件實字,可以先透過 JSON 格式化工具 進行驗證與排版。
  • **提供具代表性的範例:**產生的型別準確度取決於您提供的資料。如果 API 的特定欄位有時回傳字串,有時回傳數字,請確保您的範例 JSON 在陣列中同時包含這兩種型別,或者稍後手動將產生的型別調整為聯集 (union)。範例資料越豐富,產生的 TypeScript 定義就會越準確。
  • **從其他格式轉換:**如果您的資料為其他格式,可能需要先進行轉換。例如,在產生 TypeScript 定義前,您可以使用 XML 轉 JSON 或 YAML 轉 JSON 工具,先取得格式正確的 JSON 資料。

常見問題

轉換器如何推斷型別?
它會分析 JSON 資料中的實際值。字串會轉換為 string,數字轉換為 number,布林值轉換為 boolean,而巢狀物件或陣列則會遞迴轉換為巢狀型別或介面。
如果我的 JSON 包含混合型別的陣列會怎樣?
工具會產生聯合型別(例如 (string | number)[]),準確反映陣列中存在的不同資料型別。
「Optional null」設定有什麼作用?
啟用後,任何值為 null 的 JSON 屬性都會在 TypeScript 定義中被標記為可選屬性。這對於處理以 null 表示缺失資料的稀疏 API 回應特別有用。
我可以產生型別別名 (Type alias) 而不是介面 (Interface) 嗎?
可以,您可以將樣式設定切換為「type」,以產生 type Root = { ... } 而非 interface Root { ... }。
我的 JSON 資料會被傳送到伺服器嗎?
不會。所有解析與轉換都在您的瀏覽器中本機執行。您的資料絕不會被上傳,處理專有或敏感的 API 回應時絕對安全。
為什麼我的 JSON 會發生錯誤?
輸入的內容必須是嚴格有效的 JSON。常見問題包含鍵值缺少引號、多餘的結尾逗號,或是使用單引號代替雙引號。