【发布时间】:2011-10-27 15:56:26
【问题描述】:
我有 hash(Hash.from_xml) 看起来像这样(来自检查):
{
"FileName"=>"hofplayers.xml",
"Version"=>"1.0",
"UserID"=>"3955847",
"FetchedDate"=>"2011-08-16 00:41:02",
"PlayerList"=>{
"Player"=>{
"PlayerId"=>"92121587",
"FirstName"=>"Gennady",
"NickName"=>nil,
"LastName"=>"Buzykin",
"Age"=>"45",
"NextBirthday"=>"2011-09-24 22:10:00",
"ArrivalDate"=>"2008-03-08 16:37:00",
"ExpertType"=>"15",
"HofDate"=>"2010-01-23 16:10:00",
"HofAge"=>"40"
}
}
}
然后我会迭代每一个,因为可以有不止一个玩家:
<% @hof['PlayerList']['Player'].each do |player| %>
<%= player['NickName']%>
<% end %>
它失败了 TypeError: can't convert String into Integer。但是当有多个玩家时,它就像我想要的那样工作。问题似乎是,当有单个玩家时,每个人都制作数组而不是哈希,player.inspect 给出:
["PlayerId", "92121587"]
["FirstName", "Gennady"]
["NickName", nil]
["LastName", "Buzykin"]
["Age", "45"]
["NextBirthday", "2011-09-24 22:10:00"]
["ArrivalDate", "2008-03-08 16:37:00"]
["ExpertType", "15"]
["HofDate", "2010-01-23 16:10:00"]
["HofAge", "40"]
代替
{
"PlayerId"=>"25787535",
"FirstName"=>"Rico",
"NickName"=>nil,
"LastName"=>"van Oostveen",
"Age"=>"42",
"NextBirthday"=>"2011-10-23 22:18:00",
"ArrivalDate"=>"2006-02-11 18:43:00",
"ExpertType"=>"2",
"HofDate"=>"2010-04-25 22:01:00",
"HofAge"=>"38"
}
那么我做错了什么?
【问题讨论】:
-
当玩家超过一个时,PlayerList会变成一个数组吗?还是你得到 PlayerList => {"Player1" => {...}, "Player2" => {...}}
-
@phillee 变成了一个数组。
标签: ruby-on-rails ruby hash typeerror