请注意 fromJson 会返回结果,可以是错误字符串或成功。
如果我在流上使用fromJson(例如,来自http-streams的response使用表达式parseFromStream (fromJSON <$> json')
)(link),则会对结果强制进行模式匹配完全首先缓冲整个流,以便解析成功或失败,无论进一步消耗的响应是否足够懒惰(即恒定空间解析+消费不可能)?或者,两者解析和结果是否可以懒散地消耗,即恒定空间解析+消费 可能?)?文档sau&#34; parseFromStream只消耗尽可能多的输入以满足Parser&#34;但是它不清楚如何满足Parser&#34;涉及结果上的模式匹配以产生成功或错误。
(P.S。或者,它是不可能的,是否有一种不同的方式允许消耗的常量空间解析?)
答案 0 :(得分:2)
不幸的是,一般来说,没有办法做到这一点。我在编写xml-conduit时采用的方法是让解析器解析单个事件,例如&#34; element begin&#34;和&#34;元素结束。&#34;我过去多次考虑过为JSON数据提供类似的Haskell库。
实际上有这样的东西可用作C库绑定:yajl。
答案 1 :(得分:0)
我刚刚完成了一个执行增量解析的json解析器。结果和输入都可以懒散地消耗,只要是恒定的空间就可以是恒定的空间。看看这是否有助于你: https://github.com/ondrap/json-stream