json - 在 Haskell 中将元组数组转换为 JSON

标签 json haskell aeson

谁知道怎么转换

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 ?

最佳答案

AesontoJSON 函数应该按原样转换 tt,但它不会为您提供字段名称。要获取名称,请创建一个自定义数据类型(可能是一个等同于 (Int,String) 的数据类型,以将名称放在这些字段上)并派生您自己的 ToJSON 自定义实例 as described in the docs.对于您想做的事情,您可能只需派生 Generic 并声明 ToJSON 的实例即可。

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

关于json - 在 Haskell 中将元组数组转换为 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24268035/

相关文章:

Haskell 调试

haskell - Haskell Monads 中的 `let .. in do` 和 `<-` 表示法有什么区别?

json - 使用 Aeson 在 Haskell 中解析嵌套 JSON

haskell - 无法使用镜头从嵌套 JSON 收集值

c++ - 从 json 文件构建 boost 属性树性能很差?

javascript - 解析时的额外值,然后循环遍历 JSON 字符串

haskell - 类型解构

javascript - 清理充满具有 1 个属性的对象的 JSON 对象

ios - 如何请求在ios中有空格和点的url?

json - FromJSON 从多个字段创建一个列表