我有一个像这样的Ruby哈希表:
我希望你能够将其转换为以下格式的哈希值
我还需要保留键的数字顺序,并且键的数量是可变的。上面是超级简化的,但我在底部包含了一个真实的例子。最好的方法是什么?
附言:
它还需要递归
就递归而言,我们可以假设以下内容:
1)需要操作的键将匹配/_attributes$/ 2)哈希将有许多其他不匹配/_attributes$/的键 3)哈希内部的键始终是一个数字 4)_attributes哈希可以在任何其他键下的哈希的任何级别中
此哈希实际上是控制器中创建操作的params哈希。这是需要使用此例程解析的真实示例。
{ "stuff_attributes" => {
"1" => {"foo" => "bar", "baz" => "quux"},
"2" => {"foo" => "bar", "baz" => "quux"}
}
}
我希望你能够将其转换为以下格式的哈希值
{ "stuff_attributes" => [
{ "foo" => "bar", "baz" => "quux"},
{ "foo" => "bar", "baz" => "quux"}
]
}
我还需要保留键的数字顺序,并且键的数量是可变的。上面是超级简化的,但我在底部包含了一个真实的例子。最好的方法是什么?
附言:
它还需要递归
就递归而言,我们可以假设以下内容:
1)需要操作的键将匹配/_attributes$/ 2)哈希将有许多其他不匹配/_attributes$/的键 3)哈希内部的键始终是一个数字 4)_attributes哈希可以在任何其他键下的哈希的任何级别中
此哈希实际上是控制器中创建操作的params哈希。这是需要使用此例程解析的真实示例。
{
"commit"=>"Save",
"tdsheet"=>{
"team_id"=>"43",
"title"=>"",
"performing_org_id"=>"10",
"tdsinitneed_attributes"=>{
"0"=>{
"title"=>"",
"need_date"=>"",
"description"=>"",
"expected_providing_organization_id"=>"41"
},
"1"=>{
"title"=>"",
"need_date"=>"",
"description"=>"",
"expected_providing_organization_id"=>"41"
}
},
"level_two_studycollection_id"=>"27",
"plan_attributes"=>{
"0"=>{
"start_date"=>"", "end_date"=>""
}
},
"dataitem_attributes"=>{
"0"=>{
"title"=>"",
"description"=>"",
"plan_attributes"=>{
"0"=>{
"start_date"=>"",
"end_date"=>""
}
}
},
"1"=>{
"title"=>"",
"description"=>"",
"plan_attributes"=>{
"0"=>{
"start_date"=>"",
"end_date"=>""
}
}
}
}
},
"action"=>"create",
"studycollection_level"=>"",
"controller"=>"tdsheets"
}
key' for #<Object:0x841c99c> 来自 /storage/cait/development/app/helpers/application_helper.rb:6:in
array_from_hash' - Chris Drappier