解析大量的JSON哈希数组

时间:2018-11-26 08:12:47

标签: json ruby parsing jsonparser yajl

我正在尝试解析一个由几个哈希和大量哈希组成的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-rubyjson-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().parseYajl::Parser.new().parse_chunk之间并没有太大区别。

如何在不终止Rails应用程序的情况下有效地解析如此庞大的JSON数组的元素?

0 个答案:

没有答案