簡體   English   中英

使用Ruby訪問哈希中的哈希中的鍵值對

[英]Accessing key value pairs in a hash within a hash with Ruby

我正在針對轉換為哈希的API XML響應編寫測試。 但是,哈希是嵌套的,因此它的行為就像“ Offer”是鍵,其他所有值都是值。 (如下所示)

我希望能夠訪問此哈希中的鍵值對,以便可以使用針對“ Id”,“ Count”等的rspec測試進行斷言。謝謝

{"Offer"=>
  {"href"=>"http://xyz",
   "links"=>nil,
   "Id"=>"1501507",
   "Count"=>"5",
   "Collected"=>"3",
   "Status"=>"INPROGRESS"}}

還有#dig http://ruby-doc.org/core-2.3.0_preview1/Hash.html#method-i-dig

hash = {
  "Offer"=> { 
    "href"      => "http://xyz",
    "links"     =>  nil,
    "Id"        => "1501507",
    "Count"     => "5",
    "Collected" => "3",
    "Status"    => "INPROGRESS" 
  } 
}

puts hash.dig("Offer", "href")
# => http://xyz

如果

hash = { "Offer"=> { "href"      => "http://xyz",
                     "links"     =>  nil,
                     "Id"        => "1501507",
                     "Count"     => "5",
                     "Collected" => "3",
                     "Status"    => "INPROGRESS" } }

然后,您可以使用這種表示法:

hash["Offer"]["href"] #=> "http://xyz"

或定義一個新的哈希並使用常規哈希訪問:

new_hash = hash["Offer"]
new_hash #=>
# { "href"      => "http://xyz",
#   "links"     => nil,
#   "Id"        => "1501507",
#   "Count"     => "5",
#   "Collected" => "3",
#   "Status"    => "INPROGRESS" }

new_hash["href"] #=> "http://xyz"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM