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"}}]}

大陸が 1 つしかないことに気付くでしょう。これは、Ruby ハッシュがキーごとに 1 つの値しかサポートしないためです。そのため、キーはJSON 内Continentでそれぞれに対して上書きされます。Continentそのデータをフォーマットする別の方法を検討する必要があるかもしれません。

于 2012-11-13T16:01:34.787 に答える