谁知道怎么转换
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 ?
最佳答案
Aeson
的 toJSON
函数应该按原样转换 tt
,但它不会为您提供字段名称。要获取名称,请创建一个自定义数据类型(可能是一个等同于 (Int,String) 的数据类型,以将名称放在这些字段上)并派生您自己的 ToJSON
自定义实例 as described in the docs.对于您想做的事情,您可能只需派生 Generic
并声明 ToJSON
的实例即可。
编辑:刚刚尝试过,它工作正常,但如果你真的需要将该数据字段命名为数据,你将不得不编写一个自定义 toJSON
实例,因为 data
是 Haskell 中的保留关键字,您不能将其用作任何名称。
关于json - 在 Haskell 中将元组数组转换为 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24268035/