Haskell:将JSON数据解析为Map或元组列表?

时间:2014-04-16 03:20:46

标签: json haskell

有没有办法自动将JSON数据转换为Data.Map或只是一个元组列表? 说,如果我有:

{Name : "Stitch", Age : 3, Friend: "Lilo"}

我希望将其转换为:

fromList [("Name","Stitch"), ("Age",3), ("Friend","Lilo")]

..没有定义Stitch数据类型。

我很乐意在生成的地图中将整数解析为字符串。我可以稍后将它们读成整数。

1 个答案:

答案 0 :(得分:14)

您可以使用aeson。请参阅其文档教程中的Decoding a mixed-type object

>>> import qualified Data.ByteString.Lazy.Char8 as BS
>>> :m +Data.Aeson
>>> let foo = BS.pack "{\"Name\" : \"Stitch\", \"Age\" : 3, \"Friend\": \"Lilo\"}"
>>> decode foo :: Maybe Object
Just fromList [("Friend",String "Lilo"),("Name",String "Stitch"),("Age",Number 3.0)]

Object只是从HashMap键到Text值的ValueValue类型是JS值的和类型表示。