我有一个巨大的Json文件,我希望避免完全加载到内存中。它的结构非常简单:它由一个内部具有任意元素的大型数组组成。我只想通过随机丢弃大部分元素来转换数组,并简单地输出转换后的Json。我认为这会让Haskell很好的练习(我不是专家,也不了解太多的FP理论)。用Haskell对一个巨大的json数组进行子采样
我发现了pipe-aeson [1]这似乎是我想要的,但经过一段时间后,我不得不承认我卡住了。几乎没有例子,虽然我可以使用Pipes来下采样数据,但使用Parser对象似乎更加复杂。我发现的选项(evalStateT)是严格的,解析整个事情,而不让我介入。
也许透镜将是我的问题的解决方案,但他们非常抽象我不明白他们是什么,也不知道如何使用它们。
有人比我更有见识提供一些指导?
[1] https://hackage.haskell.org/package/pipes-aeson-0.4.1.3/docs/Pipes-Aeson.html#t:DecodingError
我找到了一种方法来处理JsonStream和Pipes:https://gist.github.com/joelthelion/7d4d4b44120607b63035。这不是完美的,但它的工作原理。无论如何,感谢您确认Aeson不是正确的工具。 –