JSON 轉 Dart
免費線上 JSON 轉 Dart 工具。貼上介面範例即可產生帶型別的資料類別,包含 fromJson/toJson 工廠、空安全與 final 欄位,可直接用於 Flutter,全程在瀏覽器本地完成。
JSON 轉 Dart 工具會產生什麼?
它產生可直接使用的 Dart 類別:每個模型都有帶型別的欄位以及 fromJson 和 toJson 工廠方法,用純 Dart 即可解碼和編碼 API 資料,不需要 build_runner 或額外套件。
巢狀物件是怎麼處理的?
每個 JSON 物件都會產生一個獨立的類別。父類別持有巢狀型別的欄位,fromJson 裡遞迴呼叫子類別工廠,toJson 裡呼叫子類別的 toJson,深層結構會映射成一棵小類別樹。
物件陣列怎麼處理?
不同陣列元素的物件會被合併:所有鍵的聯集構成一個元素類別,欄位型別為 List<元素類別>。某些元素缺失的鍵會自動標記為可空。
空安全(null safety)選項改變了什麼?
開啟空安全後,可能缺失或為 null 的欄位會加 ? 後綴,建構子把它們變成可選具名參數,fromJson 用可空感知的轉換來讀取;關閉則輸出普通非空風格的型別。
什麼時候應該開啟 final 選項?
final 讓所有欄位在建構後不可變,這是 Dart 資料類別的建議寫法,還能讓分析器幫你捕捉對模型的意外修改。
JSON 鍵不是合法 Dart 識別字怎麼辦?
類似 @type 或 order-id 的鍵會自動重新命名為合法的駝峰識別字(以數字開頭時加 $ 前綴)。產生的 fromJson 仍讀取原始鍵名字串,並且會列出所有被改名的欄位。
類別名是怎麼確定的?
頂層類別名取自「類別名」輸入框(自動轉成 PascalCase)。巢狀類別根據產生它的 JSON 鍵產生 PascalCase 名,例如 user_profile 會變成 UserProfile 類別。
我的 JSON 會被上傳嗎?
不會。解析和程式碼產生完全在瀏覽器中進行,.dart 檔案也在本地產生供下載,私有的 API 範例和權杖不會離開你的裝置。
如何使用JSON 轉 Dart
在瀏覽器中直接把 JSON 樣例變成可直接使用的 Dart 資料類別。類別、工廠方法與型別轉換全部在本機產生,你的資料不會被上傳。
- 把 JSON 貼到左側編輯器,右側隨輸入即時顯示 Dart 程式碼(300ms 防抖)。
- 在「Class name:」中填寫頂層類別名稱,會自動轉換為 PascalCase。
- 開啟「Null safety」開關,為可空欄位加上 ? 並在 fromJson 中產生可空感知的型別轉換。
- 開啟「final」開關讓所有欄位不可變,然後複製結果或下載為 .dart 檔案。
巢狀物件會產生獨立的類別,物件陣列會合併為一個 List<元素類別> 的元素類別;@type 這類非法鍵會自動改名,而 fromJson 仍讀取原始鍵名。
相關工具
- JSON轉TypeScript 將JSON資料即時轉換為TypeScript介面和型別定義。支援巢狀物件、陣列和聯合型別。
- JSON轉Go結構體 即時將JSON轉換為Go結構體定義。貼上JSON即可產生帶正確型別、json標籤和omitempty支援的整潔Go程式碼。
- 檔案雜湊校驗 本地計算校驗MD5、SHA-1、SHA-256、SHA-512檔案雜湊值
- Chmod 計算器 免費線上chmod計算器,透過核取方塊視覺化Linux檔案權限並計算chmod值。即時轉換數字(755, 644)和符號(rwxr-xr-x)表示法,支援setuid、setgid、sticky bit等特殊權限。
- ASCII碼表 完整的ASCII字元編碼參考表,包含十進位、十六進位、八進位、二進位編碼、HTML實體和字元描述。支援即時搜尋和篩選。
- Hex檔案檢視器 以十六進制轉儲格式檢視檔案內容,支援搜尋、偏移導航和虛擬滾動
- MIME類型查詢 透過副檔名即時查詢MIME類型,或反向查找副檔名。免費線上工具,收錄1000+條目。
- 螢幕解析度檢測 即時偵測螢幕解析度、視窗大小、DPI、色深等顯示器資訊。