0

次のようなハッシュが@dataあります。

{
   "calcData"   =>   {
      "coverStartDate"      =>"10/08/2011",
      ...
      "part"=>      [
         {
            "licenceYears"            =>"10",
            "licenceType"            =>"1",

            ...

            "@partname"            =>"ratingData"
         },
         {                
            "dob"            =>"26/01/1964",
            "age"            =>"47",

            ...

            "@partname"            =>"driver"
         },

         ...
      ]
   }
}

part違いのあるビットには、さらにさまざまなセクションがあります@partname

@partnameこれらのビットの 1 つを選択する最良の方法は何ですか?

例えば:

@data["calcData"]["part <<< where @partname="ratingData" >>> "]["licenceYears"]

このロジックを ruby​​/rails で表現するにはどうすればよいですか?

4

3 に答える 3

2
query = 'driver'

@data["calcData"]['part'].select{|part| part['@partname'].eql?query}
 => [{"dob"=>"26/01/1964", "age"=>"47", "@partname"=>"driver"}] 
于 2012-09-07T12:02:35.857 に答える
0

アプローチは次のとおりです。

part = @data["calcData"]["part"]
keys = part.keys.select{|key| part["@partname"] == "ratingData"}
values = keys.collect{|key| part[key]["licenceYears"]}

これを 1 つのライナーに組み合わせることができますが、読むのは簡単ではありません。

于 2012-09-07T11:18:17.280 に答える
0

構造体を使用します。

CalcData = Struct.new :coverStarDate, :part
calc_data = CalcData[ "10/08/2011",
                      { "licenceYears" => 10,
                        # etc.
                      } ]

したがって、トップレベルのブラケット参照を取り除くと、次のように言うことができます:

calc_data.part["licenceYears"]
于 2012-09-07T11:57:48.100 に答える