可以說我有以下結構:解析JSON值
import Data.JSON
import Data.List
data Lang = Lang { name :: String,
desc :: String }
derive Show Lang
instance ToJSON Lang where
toJSON Lang{name, desc} =
Struct [
assoc "name" name,
assoc "desc" desc
]
到目前爲止,我可以把郎實例JSON:
langEn = Lang { name = "en",
desc = "english" }
langEnJSON = toJSON langEn --- produces {"name" : "en", "desc" : "english"}
但我無法弄清楚如何實施相反操作:
instance FromJSON Lang where
fromJSON (Struct fields) = ---
我第一次讀文檔,但恐怕我還沒有得到如何使用fromJSON
並使用拍拍在這種情況下:(燕鷗匹配
看,你有它比我快!請注意編譯器警告:提供一個公式,該公式對於不是Struct的所有內容都是失敗的。否則,你的程序會因輸入錯誤而中止。 (嘗試「[]」) – Ingo
當然,您的答案是我正在尋找的解決方案:-)我仔細看看您的評論和答案,然後編輯我的答案以添加您的建議。謝謝Ingo。 –
你的問題變成了一個重要的點rgd。文檔 - 它沒有提到例子中的「fields」函數,但它應該。我首先寫了文檔(經常推薦),後來在我看來,「field」(這只是Data.List.lookup的一個小泛化,加上來自應用於找到的值的JSON)可能非常有用。所以我也會將它包含在文檔中。 – Ingo