【问题标题】:Which Haskell package for JSONJSON 的哪个 Haskell 包
【发布时间】:2010-09-07 23:44:16
【问题描述】:

Hackage for Haskell 上有大约十几个 JSON 包。我怎么知道我应该使用哪个包?如何获得大众意见?

是否有关于哪个包使用最多、下载最多等的统计数据?

【问题讨论】:

  • 了解 Haskell 后,您可能只需不到 100 行就可以自己动手。
  • 了解 Haskell,有一个经过良好测试的库,只需在 shell 中输入一行即可安装。

标签: json haskell hackage


【解决方案1】:

我认为其他答案已经过时,今天它被广泛接受,我认为最好的 JSON 库和 Haskell 中的事实标准是 Aeson:

http://hackage.haskell.org/package/aeson

维护者是 Brian O'Sullivan,他以对 Haskell 的深入了解和以性能为导向的工作而闻名;毫无疑问,这是正确的选择。

此外,Aeson 提供了一个非常好的 API,check this example

另外,我不知道过去但现在 Yesod 也使用 Aeson:

http://hackage.haskell.org/packages/archive/yesod-json/1.1.0/doc/html/Yesod-Json.html “使用 aeson 包”

http://www.yesodweb.com/book/json-web-service “我们将使用 aeson 进行 JSON 解析和渲染”

【讨论】:

    【解决方案2】:

    根据别人的依赖选择

    如果您使用新的 Haskell Web 框架之一,您可以考虑使用与该框架相同的 json 库。从反向依赖看来,配对是:

    • 是的:JSONb
    • Happstack:RJson
    • 骑马:???

    而且很多包都使用json

    按功能选择

    您也可以根据其功能选择使用包。

    如果您是 ByteStrings 的用户,请考虑使用 JSONb。它使用 AttoParsec 而不是通常的 Parsec,因此它可能会更快(但要先测量它)。

    RJson 正在做一些聪明的把戏to serialize nested records automatically

    YAJL 提供与 yajl 的绑定,这是一个用 C 编写的快速解析器。但请注意:原始 yajl 是 BSD,但 Haskell YAJL 是 GPL-v3。

    json 可能是一个安全的选择。

    【讨论】:

    【解决方案3】:

    根据this listRJson 的下载频率高于json,但json 是迄今为止 Hackage 上其他库使用最多的,有 77 个reverse dependencies(33 个直接和 44 个间接) ,而 JSONb 排在第二位。

    【讨论】: