0

REST API から受け取った JSON を読み込もうとしていますが、いくつか問題があります。

JSON を取得するために、Open::URI を使用しています。私は次のようにリクエストを作成しました:

require "open-uri"
require "json"
content = open("http://foo.bar/test.json").read
result = JSON.parse(content)

この時点で、私の JSON は文字列から解析されることになっているため、正しく理解できれば、受け取った JSON が次のような構造を持っていると仮定して、JSON を含むハッシュが構築されます。

{
   "root":
   {
       "foos":
       {
           "1":
           {
               "title" : "zero",
               "number" : 0
           },
           "2":
           {
               "title" : "twenty",
               "number" : 20
           },
           ...
       }
    }
}

foosそれぞれを繰り返し処理し、それぞれについてタイトルと番号を取得したいと思います。私はこれを試しました:

content["root"]["foos"].each do |foo| puts foo.title + " " + foo.number end

しかし、出力として、私は得ました:

#<Enumerator:0x007fceb8b33718>

私の間違いはどこにありますか?

前もって感謝します、

4

2 に答える 2

1

ここにオプションがあります...foosオブジェクト内のキーを反復処理します。

json = JSON.parse(your_sample_json)
 => {"root"=>{"foos"=>{"1"=>{"title"=>"zero", "number"=>0}, "2"=>{"title"=>"twenty", "number"=>20}}}}

foos = json["root"]["foos"]
 => {"1"=>{"title"=>"zero", "number"=>0}, "2"=>{"title"=>"twenty", "number"=>20}}

foos.keys.each { |key| puts foos[key]["title"] }
zero
twenty

また、解析している JSON オブジェクトを制御できる場合はfoos、一連の番号付きオブジェクトの代わりに配列を作成できます。

于 2013-08-25T00:28:39.683 に答える