我正在尝试解析一个由几个哈希和大量哈希组成的JSON对象(有时在数组内200,000个哈希为300,000个哈希)。这是JSON对象的示例。我需要在数组report_datasets
中逐个散列地解析散列。
https://api.datacite.org/reports/0cb326d1-e3e7-4cc1-9d86-7c5f3d5ca310
{ report_header: {report_id: 33738, report_name: "Report first"},
report_datasets: [
{dataset_id:1, yop:1990},
{dataset_id:2, yop:2007},
{dataset_id:3, yop:1983},
.
{dataset_id:578999,yop:1964},
]
}
在我尝试过的每种方法中,包括使用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数组的元素?