我有一个哈希,@data
看起来类似于以下内容:
{
"calcData" => {
"coverStartDate" =>"10/08/2011",
...
"part"=> [
{
"licenceYears" =>"10",
"licenceType" =>"1",
...
"@partname" =>"ratingData"
},
{
"dob" =>"26/01/1964",
"age" =>"47",
...
"@partname" =>"driver"
},
...
]
}
}
part
位中有不同的部分,差异为@partname
s。
选择其中一个@partname
位的最佳方法是什么:
e.g:
@data["calcData"]["part <<< where @partname="ratingData" >>> "]["licenceYears"]
我如何在ruby / rails中表示这个逻辑?
答案 0 :(得分:2)
query = 'driver'
@data["calcData"]['part'].select{|part| part['@partname'].eql?query}
=> [{"dob"=>"26/01/1964", "age"=>"47", "@partname"=>"driver"}]
答案 1 :(得分:0)
这是一种方法:
part = @data["calcData"]["part"]
keys = part.keys.select{|key| part["@partname"] == "ratingData"}
values = keys.collect{|key| part[key]["licenceYears"]}
你可以将它组合成一个衬里,但它并不容易阅读。
答案 2 :(得分:0)
使用Struct。
CalcData = Struct.new :coverStarDate, :part
calc_data = CalcData[ "10/08/2011",
{ "licenceYears" => 10,
# etc.
} ]
因此,您可以摆脱顶级括号参考,广告,您可以说:
calc_data.part["licenceYears"]