工具用的順手嗎?
你的回饋能幫助我們做得更好
將JSON資料自動轉換為Haskell的data/newtype定義,生成可直接用於Aeson庫的程式碼,提升開發效率。
概覽
了解工具能解決的問題、計算或處理邏輯,以及資料邊界。
這項工具把一段符合 JSON 語法的資料樣例轉成 Haskell 程式碼,協助你先建立資料型別草稿。JSON 以物件、陣列和字串、數字、布林值、null 等值組合描述資料;轉換結果會依輸入中看得到的欄位與巢狀結構組織型別。Haskell 的 data 宣告可定義資料型別與建構子,記錄欄位則能以名稱標示資料欄位。IETF RFC 8259說明 JSON 的值種類;Haskell 2010 語言報告提供資料宣告與欄位語法的規範背景。
例如,樣例 {"name":"Lin","tags":["dev"]}包含文字欄位與文字陣列。產生的型別名稱預設為 Root,可改成符合專案命名的名稱;模組名稱亦可調整。轉換依據是你提供的樣例,而非服務契約或完整 JSON Schema。
Haskell 輸出可設定模組名稱,並可選擇只產生型別定義。陣列預設使用 List,也可以改用 Vector;記錄形式則可在一般記錄與 newtype 包裝形式之間調整。這些選項影響程式碼表示方式,不會補齊樣例未包含的欄位規則。quicktype 專案文件亦將其定位為依樣例或結構輸入產生型別的工具,不能據此推定產物已符合你的專案版本與依賴。
指南
依步驟完成操作,並透過範例核對輸入與結果。
貼上完整 JSON 文件,或載入範例,再使用格式化功能整理縮排。輸入需是有效 JSON;格式錯誤時會顯示錯誤,且不保留舊程式碼作為新結果。
設定根型別名稱;展開選項後,可更改模組名稱、選擇僅輸出型別定義、設定陣列使用 List 或 Vector,以及選擇記錄形式。
檢視自動更新的程式碼,確認欄位和巢狀型別符合資料含義,再複製或下載 .hs 檔。若資料結構有不同分支,先準備能代表各種情況的樣例並自行整併檢查。
例如,可將根型別名稱改成 Profile,並把模組名稱設為專案慣用名稱。輸出後仍需在自己的 Haskell 專案中補上必要設定並編譯確認。
情境
查看這項工具在不同工作與生活流程中的用法。
接手服務介面的 Haskell 開發者,可貼入一筆去識別化回應,先查看物件欄位、巢狀物件及陣列在型別草稿中的對應,再依正式文件補上必填條件、錯誤回應和欄位語意。
維護既有程式的人,可將非敏感的 JSON 測試樣例轉成起始型別,調整命名與 List/Vector 等表示方式後,納入自己的程式碼審查與編譯流程。
問答
集中解答常見疑問與容易混淆的問題。
不會。此頁產生的是 Haskell 型別程式碼;JSON Schema 是另一種描述資料結構與限制的格式,不能把兩種輸出視為相同成果。
單筆樣例只呈現當下出現的欄位和值,無法證明欄位在所有資料中都必填,也無法涵蓋其他回應分支。請對照 API 文件或多筆樣例自行確認。
工具負責依輸入和選項產生程式碼,並未替你的專案執行編譯。複製後請檢查編譯器版本、套件、匯入、名稱和欄位型別,再於目標專案編譯。
須知
使用前了解適用範圍、結果限制與必要提醒。
型別輸出是依目前 JSON 樣例推斷出的程式碼起點,不是完整資料契約、JSON Schema 驗證器或編譯保證。樣例無法單獨說明欄位能否缺省、null 的業務意義、日期字串格式、數字精度或不同回應的聯集結構。使用前應逐欄核對正式規格,並依實際資料調整型別、記錄欄位、解析方式與序列化需求。不要貼入存取權杖、個人資料或其他機密;此處沒有可核實的輸入保存政策資訊。
推薦
查找相關工具、專題與可用的 API 能力。