解析大量JSON哈希数组
我试图解析一个JSON对象,它由几个散列和大量散列组成(有时数组中有300000个散列,200MB)。下面是JSON对象的一个示例。我需要在数组解析大量JSON哈希数组,json,ruby,parsing,jsonparser,yajl,Json,Ruby,Parsing,Jsonparser,Yajl,我试图解析一个JSON对象,它由几个散列和大量散列组成(有时数组中有300000个散列,200MB)。下面是JSON对象的一个示例。我需要在数组report\u数据集中按哈希解析哈希 在我尝试的每一种方法中,包括一些使用yajl-ruby和json-streamer的方法,我的应用程序都被杀死了。当我使用parse_chunk时 def parse_very_large_json options= {symbolize_keys:false} parser =
report\u数据集中按哈希解析哈希
在我尝试的每一种方法中,包括一些使用yajl-ruby
和json-streamer
的方法,我的应用程序都被杀死了。当我使用parse_chunk
时
def parse_very_large_json
options= {symbolize_keys:false}
parser = Yajl::Parser.new(options)
parser.on_parse_complete = method(:print_each_item)
report_array = parser.parse_chunk(json_string)
end
def print_each_item report
report["report-datasets"].each do |dataset|
puts “this is an element of the array“
puts dataset
end
end
解析发生了,但最终还是被终止了
问题似乎在于,Yajl::Parser.new().parse
和Yajl::Parser.new().parse_chunk
在这两种被终止的方法中没有太大区别
如何在不杀死rails应用程序的情况下有效地解析如此庞大的JSON数组的元素?当你的应用程序被杀死时,操作系统会发出任何错误消息?nada@emaillenin,我一直在用rspec
运行我的测试,我可以看到整个解析器打印数组的每个元素,直到我突然得到一个killed
stdout。就是这样。你能试试Oj gem吗?这似乎是一个选择,但我需要看一下。这似乎更像是构建自己的解析器。你们用过它吗?你们试过文章中描述的方法吗?它使用Oj::ScHandler解析器,但
def parse_very_large_json
options= {symbolize_keys:false}
parser = Yajl::Parser.new(options)
parser.on_parse_complete = method(:print_each_item)
report_array = parser.parse_chunk(json_string)
end
def print_each_item report
report["report-datasets"].each do |dataset|
puts “this is an element of the array“
puts dataset
end
end