ネストされたハッシュを使用していて、何か助けを得ることに問題があります。私が扱っているデータは次のようになります:Ruby - ハッシュキーが存在することを確認してください。
=> {"searchresults"=>
{"request"=>{"address"=>"10 Tiverton Ln", "citystatezip"=>"28803"},
"message"=>{"text"=>"Request successfully processed", "code"=>"0"},
"response"=>
{"results"=>
{"result"=>
{"zpid"=>"5620805"}}
私はハッシュから特定の情報を取得しようとしています。私が持っている問題は:ハッシュキーが存在しない場合、それはエラーをスローし、スクリプトを殺す。
この問題を再調整するには、事前にキーの存在を確認しているだけであることがわかりましたが、チェックが正しく機能していないようです。私は "キーを使用していますか?"私の検証では(キーがあると)、Rubyから "false"という結果が返ってくるので、私は明らかに何か間違っています。
hash["searchresults"]["response"]["results"]["result"]["zpid"]
=> "5620805"
hash.key?("searchresults""response""results""result""zpid")
=> false
(注:私は、最後の入力は、コメントに基づいて、単に連結した文字列だったが、動作するように任意の組み合わせを取得することはできません実現し、下記の方にご覧ください記事の下部)
は最高何ですか存在しないハッシュキーをクエリするときにエラーを回避する方法はありますか? 「キー?メソッドは、それについて行くための適切な方法です、誰かが私のエラーがどこの正しい方向に私を指すことができます。
応答に基づいて情報を追加しました。私はあなたに感謝...私は最終的に私が必要とcomments.Everythingのおかげで作業している掘るメソッドの構文を理解することができたルビー
ruby 2.3.0p0 (2015-12-25 revision 53290) [x86_64-linux]
の以下のバージョンを使用しています!
hash.dig("searchresults", "response", "results", "result", "zpid")
=> "5620805"
あなたはどのバージョンのRubyを使用していますか?最近のものには、あなたに役立つかもしれない['Hash#dig'](http://ruby-doc.org/core-2.3.3/Hash.html#method-i-dig)があります。 –
有効なRubyオブジェクトではないため、ソリューションをテストするためにサンプルを使用することはできません。ここではハッシュの一部を与えましたが、有効なハッシュにするのは非常に簡単です。また、例を挙げるときは、目的の出力を表示し、各入力オブジェクトに変数を割り当ててください(例えば 'h = {" searchresults "=> ...>))。後者は、読者が答えやコメントをそれらを定義することなくそれらの変数(ここでは 'h')を参照できるようにします。また、 'pry(main)>'を編集してください。気が散っているだけでなく、コードをカットアンドペーストするすべての読者は、そうでない場合は削除する必要があります。 –