Cosider以下JSON結構:解析JSON與埃宋
{"k1":
{"k2":
[{"a": 3, "b": 4, "c": 2},
{"a": 1, "b": 2, "c": 9}]},
"irrelevant": "x"}
和Haskell數據類型:
data My = My Int Int
上面JSON應該解釋爲的我的列表:[My]
,而兩個int應該分別從JSON陣列的「a」和「b」鍵中取出:
[My 3 4, My 1 2]
無可否認我很好ady面臨着最簡單的部分麻煩。
這是我如何開始使用埃宋:
import Data.Aeson
import qualified Data.ByteString.Lazy.Char8 as L8
sample :: L8.ByteString
sample = "{\"k1\":{\"k2\":[{\"a\": 3, \"b\": 4, \"c\": 2}, {\"a\": 1, \"b\": 2, \"c\": 9}]}, \"irrelevant\": \"x\"} "
在REPL:
decode sample :: Maybe Object
Just (Object (fromList [("irreleva...
可正常工作時,JSON解析。但下一步,獲取對象在關鍵的「K1」,不工作:
:t (fromJust $ (decode sample :: Maybe Object)) .: "k1"
...
:: FromJSON a => aeson-0.11.2.1:Data.Aeson.Types.Internal.Parser a
我在這裏接收Parser a
類型,我需要/希望得到另一個Object
或Maybe Object
在這一點上。
我在正確的道路上嗎?