3

有谁知道如何转换

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?

4

1 回答 1

6

AesontoJSON函数应该tt按原样转换,但它不会给你字段名称。要获取名称,请创建自定义数据类型(并且可能是等效于 (Int,String) 的数据类型,以将名称放在这些字段上)并派生您自己的自定义实例,ToJSON 如文档中所述。对于您想要做的事情,您可能只需deriving Generic声明一个ToJSON.

编辑:刚刚尝试过,它工作正常,但如果你真的需要将该数据字段命名为数据,你将不得不编写一个自定义toJSON实例,因为data它是 Haskell 中的保留关键字,你不能将它用作任何东西的名称.

于 2014-06-17T20:40:36.753 回答