在Rails中迭代JSON

时间:2012-11-13 15:52:17

标签: ruby-on-rails-3 json

我有一个单行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部分并提取相关记录。目标是循环并在列表/表格/显示中输出信息。

感谢您的帮助 - 让我知道我是否可以澄清。

1 个答案:

答案 0 :(得分:5)

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哈希只支持每个键一个值,所以Continent键被覆盖了每个Continent个JSON。您可能需要查看格式化该数据的不同方式。