2016-06-14 7 views
0

JSONを解析して表示する値を抽出しようとしています。特定のキー値のペアを持つJSON配列のすべての要素を検索して保存する方法

JSON形式は次のとおりです。

{ 
"orders": [ 
{ 
... 
"order_number": 12345, 
"status" : "processing", 
... 

私はall_ordersで解析されたJSONでこのサンプルの応答があります。

response = http.request(request) 
all_orders = JSON.parse(response.body) 

# Checking for 'processing' orders... 
processing_orders = all_orders["orders"].find{ |h| h['status'] == 'processing' }['order_number'] 

を私は「処理」のステータスが一致order_numbersを表示したいです、しかし、私が入力するとき:

puts "processing_orders" 

それは唯一のprinです1つの値を付けて、私は確かにそれがあることを知っています。

私が間違っていることはありますか?私はこれに取り組んでかなり新しいですし、自分でソリューションを試してみるために最善を尽くしました。 find方法documentation

+0

はタイプミス 'puts'文字列ですか? – Brennan

答えて

2

ルック:

をブロックする列挙内の各エントリを渡します。ブロック が偽でない最初のものを返します。

Findは1つのエントリのみを返します。あなたが代わりにselectのようなものを使用して、注文番号を取得するためにマップする

processing_orders = all_orders["orders"].select{ |h| h['status'] == 'processing' }.map{|order| order['order_number']} 
+0

優秀、それは非常にうまく動作します!ありがとう、私は1時間ほどそれを突き止めています。 – user28374

関連する問題