除了艾森之外还怎么样?

时间:2015-09-07 05:23:59

标签: parsing haskell aeson

aeson似乎采用了一种有点简单的方法来解析JSON:它将顶级JSON值(一个对象或数组)解析为它自己的固定表示,然后提供帮助用户转换该表示的工具对自己。当JSON对象和数组很小时,这种方法非常有效。当它们非常大时,事情开始分崩离析,因为用户代码在JSON值被完全读取和解析之前无法做任何事情。这似乎特别令人遗憾,因为JSON似乎是为递归下降解析器设计的 - 似乎应该相当简单,允许用户代码介入并说明每个部分应该如何解析。是否存在深层原因aeson和较早的json以这种方式工作,或者我应该尝试创建一个新库以进行更灵活的JSON解析?

1 个答案:

答案 0 :(得分:1)

json-stream是基于流的解析器。这有点过时(2015年),但是他们采用了aeson的基准,并比较了两个库:aeson and json-stream performance comparison。在某些情况下,json-streamaeson差很多。

如果您只想使用更快的aeson(而不是流媒体),haskell-sajson看起来很有趣。它在Haskell中包装了一个高性能的C ++库,并从Value返回了aeson