我有一个巨大的 Json 文件,我想避免完全加载到内存中。它的结构非常简单:它由一个包含任意元素的大数组组成。我只是想通过随机删除大部分元素来转换数组,并简单地输出转换后的 Json。
Haskell 似乎很适合这个懒惰的问题,我认为它会是一个很好的 Haskell 练习(我不是专家,我不太了解 FP 理论)。
我发现 pipe-aeson [1] 这似乎是我想要的,但在尝试了一段时间后,我不得不承认我被卡住了。几乎没有示例,虽然我可以使用 Pipes 对数据进行下采样,但使用 Parser 对象似乎更复杂。我发现的选项 (evalStateT) 是严格的,并且会解析整个事情,而不会让我干预。
也许镜头可以解决我的问题,但它们非常抽象,我不知道它们是什么,也不知道如何使用它们。
比我更有知识的人可以提供一些指导吗?
[1] https://hackage.haskell.org/package/pipes-aeson-0.4.1.3/docs/Pipes-Aeson.html#t:DecodingError