我很难解析一个巨大的json文件。
该文件大于1GB,我尝试使用这两个宝石:ruby-stream和yajl,它们都不起作用。
以下是发生的事情的一个例子。
fileStr = File.read("hugeJSONfile.json")
^这部分没问题。
但是当我尝试将fileStr加载到JSON哈希(通过ruby-stream或yajl)时,我的计算机冻结了。
有关如何更有效地执行此操作的任何其他想法?谢谢。
答案 0 :(得分:3)
查看json-stream
或yajl
:
文档的关键引用:
JSON流:
文档本身永远不会完全读入内存。
yajl:
这个库的主要好处在于它的内存使用。由于它能够以块的形式解析流,因此其内存要求非常非常低。
您注册要查找的事件,并在读取JSON时返回键/值,而不是将其全部加载到ruby数据结构中(并因此加载到内存中)。
答案 1 :(得分:0)
好的,我能够解析它。
老实说,这不是最优雅的解决方案,但是在绝望的时候,解析一个巨大的JSON文件的一种快速方法是手动检查文件,注意一个模式,然后选择你需要的东西。
就我而言,这是我在伪代码中所做的事情
fileStr = File.read("hugeJSONfile.json")
arr = fileStr.split("[some pattern]")
arr.each do |str|
extract desired value from str
end
同样,这不是最优雅的解决方案,但它的维护成本低,并且根据具体情况,只需适应您的笔记本电脑所能提供的功能。