0

次のようなハッシュの配列に変換されている URL からの XML 応答があります。

{
  "社員リスト"=>{
    "社員プロフィール"=>{
      "BuildLoc"=>{"$"=>"1 ハッピー プレイス"},
      "ステータス"=>{"$"=>"A"},
      "SecrTitle"=>[{}, {}],
      "ID"=>{},
      "bct"=>{},
      "NUM"=>{"$"=>"1234567"},
      "ビルドシティ"=>{"$"=>"デイトン"},
      "BuildFloor"=>{"$"=>"6"},
      "経費"=>{"$"=>"1345"},
      "姓"=>{"$"=>"スミス"},
      "中"=>{},
      "SecrName"=>[{}, {}],
      "InternalSMTPAddress"=>{"$"=>"Joe.Smith@happy.com"},
      "IAddress"=>{"$"=>"Joe.Smith@happy.com"},
      "PreferredLastName"=>{},
      "DisplayName"=>{"$"=>"ジョー・スミス"},
      "携帯電話番号"=>{},
      "タイトル"=>{"$"=>"博士"},
      "BuildStreetAddress"=>{"$"=>"123 ハッピータウン"},
      "BuildState"=>{"$"=>"IL"},
      "名"=>{"$"=>"ジョー"},
      "AltContactTitle1"=>{},
      "Dept-CostCtrNo"=>{"$"=>"129923"},
      "PreferredFirstName"=>{"$"=>"ジョー"},
      "AltContactName2"=>{},
      "AltContactPhone2"=>{},
      "GDP"=>{},
      "BuildZip"=>{"$"=>"112345"},
      "RegionID"=>{"$"=>"NAMR"},
      "EmploymentType"=>{"$"=>"E"},
      "TempPhone"=>{},
      "BuildID"=>{"$"=>"01114"},
      "CountryAbbr"=>{"$"=>"USA"},
      "FaxDisp1"=>{},
      "BuildCountry"=>{"$"=>"アメリカ合衆国"}
    }
  }、
  なし=>なし
}

DisplayName" " と " "の値を抽出する最も簡単な方法は何InternalSMTPAddressですか?

4

3 に答える 3

1

返されたハッシュを " " という名前の変数に割り当てると、次のhashように、これらのキーの 2 つの目的の値にアクセスできます。

hash['EmployeeList']['EmployeeProfile']['DisplayName']
=> {"$"=>"Joe Smith"}

hash['EmployeeList']['EmployeeProfile']['InternalSMTPAddress']
=> {"$"=>"Joe.Smith@happy.com"}

それらの実際のデータが必要な場合は、末尾に を追加します['$']

hash['EmployeeList']['EmployeeProfile']['DisplayName']['$']
=> "Joe Smith"

hash['EmployeeList']['EmployeeProfile']['InternalSMTPAddress']['$']
=> "Joe.Smith@happy.com"
于 2012-07-25T21:36:57.253 に答える
0

ネストされたハッシュでキーを見つける必要がある場合は、次の方法を使用します。

def find_key(hash,key)
  hash.each {|k, v|
    return v if k==key
    tmp=find_key(v,key) if v.is_a?(Hash)
    return tmp unless tmp.nil?
  }
  return nil
end

使用法:

hash = Hash.new
hash["key1"] = "value1"
hash["key2"] = "value2"
hash["key3"] = Hash.new
hash["key3"]["key4"] = "value4"
hash["key3"]["key5"] = "value5"
hash["key6"] = Hash.new
hash["key6"]["key7"] = "value7"
hash["key6"]["key8"] = Hash.new
hash["key6"]["key8"]["key9"] = "value9"

find_key(hash,"key9") => "value9"
find_key(hash,"key8") => {"key9"=>"value9"}
find_key(hash,"dsfsdfsd") => nil
于 2012-07-25T21:50:42.027 に答える