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
在这一点上。
我在正确的道路上吗?