如果這個工具幫到了你,可以請作者喝杯咖啡 ☕
將JSON資料自動轉換為Haskell的data/newtype定義,生成可直接用於Aeson庫的程式碼,提升開發效率。
處理API返回的JSON資料時,手動編寫對應的Haskell資料型別定義既繁瑣又易錯。本工具直接解析您輸入的JSON字串,透過遞迴分析其鍵值對結構,自動生成完整的Haskell資料型別程式碼,包括data或newtype宣告、欄位定義以及必要的deriving子句,使您能立即在專案中使用Aeson庫進行序列化與反序列化。
問:JSON裡的欄位名是camelCase,生成程式碼會怎麼處理?
答:工具會嘗試將常見的JSON命名風格(如camelCase、snake_case)轉換為符合Haskell命名習慣的識別符號,通常會將欄位名首字母大寫並作為記錄選擇器。
問:JSON轉Haskell型別時,數字預設會轉成什麼型別?
答:預設推斷為Int。這是Haskell中處理整數最常用的型別,但您可能需要根據數值範圍手動調整為Integer或Scientific。
請確保輸入的JSON格式完全正確,任何語法錯誤都會導致解析失敗。工具生成的程式碼包含模組宣告(如module MyTypes where),您可能需要根據專案結構修改模組名。對於可選欄位(JSON中可能為null或不存在的鍵),生成的Haskell記錄欄位將是非Maybe型別,您需要根據業務邏輯手動將其改為Maybe型別以確保安全。
對於需要高精度數值或大整數的場景,建議將工具自動推斷的Int或Double型別手動替換為Scientific(來自scientific包)或Integer,以避免精度丟失或溢位。一個典型輸入輸出示例:輸入JSON {"name": "Alice", "age": 30, "active": true},將生成類似 data Person = Person { personName :: String, personAge :: Int, personActive :: Bool } deriving (Show, Generic, FromJSON, ToJSON) 的程式碼。建議在整合後,為關鍵資料型別補充編寫自定義的FromJSON/ToJSON例項以處理更復雜的解析邏輯或驗證規則。