2

我有一个单行 JSON 文件,我正在尝试迭代并寻找循环遍历它的最佳方式。

爆炸后,它看起来像:

{
 "system": "Test",
 "Continents": [
    {
        "Continent": {
            "name": "Europe",
            "location": "North"
         },
        "Continent": {
            "name": "Australia",
            "location": "South"
         },
        "Continent": {
            "name": "Asia",
            "location": "North"
         }
     }  
  ]
}

首先,我使用以下内容加载 JSON,它成功加载了完整的 JSON。

File.open(json_file, 'r') do |file|

    file.each do |line|            

      JSON.parse(line).each do |item|

        ## CODE TO ITERATE HERE

      end        
    end
 end

我不知道该怎么做是循环浏览该Continents部分并提取相关记录。目标是循环并输出列表/表格/显示中的信息。

感谢您的帮助-如果我能澄清一下,请告诉我。

4

1 回答 1

6

JSON.parse会将您的 JSON 字符串转换为 Ruby 哈希,因此您可以像使用其他任何内容一样使用它:

json = JSON.parse(line)
json["Continents"].each do |continent|
  # do something
end

但是,您的数据存在一个单独的问题。如果您实际使用JSON.parse您发布的数据,您应该得到如下结果:

{"system"=>"Test", "Continents"=>[{"Continent"=>{"name"=>"Asia", "location"=>"North"}}]}

您会注意到只有一个大陆 - 这是因为 Ruby 散列仅支持每个键的一个值,因此JSON 中Continent的每个键都被覆盖。Continent您可能需要查看格式化该数据的不同方式。

于 2012-11-13T16:01:34.787 回答