是否有人知道如何转换
tt :: (Int, [(Int, String)])
tt = (777, [(1, "AA") , (2, "BB") , (3, "CC")])
与JSON类似
{
"user": 777,
"data": [
{ "num": 1 , "typ": "AA" },
{ "num": 2 , "typ": "BB" },
{ "num": 3 , "typ": "CC" }
]
}
使用(最好)Aeson?
答案 0 :(得分:4)
Aeson
toJSON
函数应按原样转换tt
,但它不会为您提供字段名称。获取名称创建自定义数据类型(可能是等效于(Int,String)的数据类型,以在这些字段上放置名称)并派生自己的ToJSON
as described in the docs.自定义实例。对于您想要做的事情您可能只能使用deriving Generic
并声明ToJSON
的实例。
编辑:试过这个并且它工作正常,但如果你真的需要将该数据字段命名为数据,那么你必须编写一个自定义的toJSON
实例,因为data
是一个保留的Haskell中的关键字,您不能将其用作任何名称。