好了,所以這是一個有點複雜,但我需要循環該散列找到,如果每一個元素符合下列條件之一:深哈希檢查
的值是一個字符串
或
的值是一個哈希,包含字符串,而不是哈希
或
的值是一個哈希,包含字符串和/或哈希
或
的值是一個數組
UPDATE:
東西很奇怪的... [編輯:這是因爲#收集正在返回散列的鍵值對,這是陣列]
irb> my_hash['gd:name'].collect(&:class)
=> [Array, Array]
查看下面的散列應該該內部元素的類是一個哈希,而不是一個數組?
檢查它看起來像:
irb> my_hash['gd:name'].collect(&:inspect)
=> ["[\"gd:givenName\", {\"$t\"=>\"Thomas\"}]", "[\"gd:familyName\", {\"$t\"=>\"Chapin\"}]"]
但它像哈希:
irb> my_hash['gd:name']['gd:givenName']
=> {"$t"=>"Thomas"}
irb> my_hash['gd:name']['gd:givenName']['$t']
=> "Thomas"
{
"gd:etag"=>"\"Rnk7fjVSLyt7I2A9WhVQEU4KRQI.\"",
"id"=>{
"$t"=>"da513d38e88d949"
},
"gd:name"=>{
"gd:givenName"=>{"$t"=>"Thomas"}, "gd:familyName"=>{"$t"=>"Chapin"}
},
"gd:phoneNumber"=>[
{
"rel"=>"mobile",
"$t"=>"(480) 703-4887"
}
],
"gd:email"=>[
{
"rel"=>"home",
"primary"=>"true",
"address"=>"[email protected]"
},
{
"rel"=>"work",
"address"=>"[email protected]"}
]
}
您能澄清一下,如果您的內部散列必須包含* all * strings(或hashes)或至少一個字符串(或散列)? – joelparkerhenderson 2012-04-06 22:12:52
我在內部添加了一個編輯功能,以便其他讀者不會感到困惑 - 您可能需要將該塊文件取出。 – joelparkerhenderson 2012-04-06 22:50:40