2016-03-25 8 views
0

初めてrubyを使いこなす。Rubyで解析されたレスポンスを解析する

私が使用しているライブラリは、この

require 'net/http/post/multipart' 
require 'uri' 

    def find(issue_id) 
     get("issue/#{issue_id}") 
     response.parsed_response 
    end 

を持っていると私は

{ "問題" => { "フィールド" を出力する

puts issue_resource.find("XVRCI-42") 

としての私のファイルでそれを使用= ""値 "=" "42"、 "タイプ" => "SingleField"、 "name" => "projectFortName" 、 "name" => "numberInProject"}、{"value" => "ショート・チェンジログ・ジェネレーション・スクリプトを使用してCHANGELOG.MDを追加する" "XVRClient Harnesses"と "New release"を展開する際に、変更ログを短く生成するスクリプトとrootでchangelogが必要です。 "type" => "SingleField"、 "name" => "summary" "、" type "=>" SingleField "、" name "=>" description "} etc ...}]、" id "=>" XVRCI-42 "、" entityId "=>" 66-4857 "} }

私はこれがjsonであり、解析されていると仮定しました。 だから私はrequire 'json'を追加し、

respons = JSON.parse(issue_resource.find("XVRCI-42")) 
puts respons["field"][0]["name"] 

を実行しようとしたことが

どのように私はここに集計フィールドを取得し、文字列変数に「ショートの変更ログ生成スクリプトでCHANGELOG.MDを追加」を得ることができますか?仕事のdidnt

######## EDITのANSWER

がマーティンのおかげで判明し、それはそう

#get the summary field 
file['issue']['field'].each do |item| 
    if item['name'] == "summary" 
    puts item['value'] 
    end 
end 

は何、あなたのソースによると、私のため

+2

jsonのようには見えません - =>記号はハッシュのルビーのようなものです。あなたは私に結果を教えてください:puts issue_resource.find( "XVRCI-42")。class? – Martin

+0

@Martinはい、あなたは正しいです、それは 'ハッシュ' –

+1

@ u.genだけを指摘するように印刷しました。そうでなければ、最後までループするようにアイテムを見つけた後に ''休憩 ' ['name'] == 'summary' end''の項目の場合、項目['value']を入れます。 –

答えて

2

を働いたハッシュ

ですニーズ:

puts respons["issue"]["field"][0]["name"] 
+0

私はこれを試しますが、ここで最初の要素を取得するのではなく、名前と等しいかどうかをチェックする方法があります。[0] –

1

Enumerable#findあなたがここで欲しいものです。

response['issue']['field'].find {|x| x['name'] == 'summary'} 
=> {"value"=>"Add CHANGELOG.MD with Short Changelog Generation Script", "type"=>"SingleField", "name"=>"summary"} 
関連する問題