除了艾森之外还怎么样?

dfe*_*uer 7 parsing haskell aeson

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

MCH*_*MCH 1

json-stream是一个基于流的解析器。这有点过时了(2015 年),但他们从aeson两个库中获取了基准并进行了比较:aeson 和 json-stream 性能比较。有一种情况json-stream明显比 差aeson

如果你只是想要更快aeson(而不是流式传输),haskell-sajson看起来很有趣。它在 Haskell 中包装了一个高性能的 C++ 库,并Valueaeson.