我需要转换以下散列:如何哈希转换与代表嵌套到嵌套哈希键
{
"item[0][size]" => "12",
"item[0][count]" => "1"
}
这样:
{
"item": {
"0": {
"size": "12",
"count": "1"
}
}
}
能否请您就如何实现,大多数的意见优雅?也许我可以重用一些用于解析参数字符串的ActionPack实用方法?
我需要转换以下散列:如何哈希转换与代表嵌套到嵌套哈希键
{
"item[0][size]" => "12",
"item[0][count]" => "1"
}
这样:
{
"item": {
"0": {
"size": "12",
"count": "1"
}
}
}
能否请您就如何实现,大多数的意见优雅?也许我可以重用一些用于解析参数字符串的ActionPack实用方法?
经过一番研究,我发现了一个方法来解析嵌套查询键使用http://apidock.com/rails/Rack/Utils/parse_nested_query:
Rack::Utils.parse_nested_query('item[0][size]')
=> {
"item" => {
"0" => {
"size" => nil
}
}
}
所以它现在可以做到:
items_string = item_hash.to_a.map { |row| row.join('=') }.join('&')
result = Rack::Utils.parse_nested_query(items_string)
=> {
"item" => {
"0" => {
"size" => "12",
"count" => "1"
}
}
}
您可以重用rack
LIB方法Rack::Utils.parse_nested_query
require "rack"
def p p
Rack::Utils.parse_nested_query(p)
end
p 'item[0][size]=12' # => {"item"=>{"0"=>{"size"=>"12"}}}
Found here。
请注意,这与OP要求的内容非常接近,但并不相同。 – sawa
@sawa是的,但我的答案基于[这](http://stackoverflow.com/questions/33738395/how-to-convert-hash-with-keys-representing-nesting-into-a-nested-hash/ 33739000?noredirect = 1#comment55245796_33738395)OP评论。是的,目前还不清楚OP的要求。 –
你尝试过什么吗? –
尝试搜索actionpack的代码库,并尝试'CGI :: parse('item [0] [size] = 12')'但它不分析嵌套密钥字符串 – roody
该散列的来源是什么?修复它可能是有意义的,而不是构建解决方法。 – spickermann