[英]How to convert hash with keys representing nesting into a nested hash
我需要轉換以下哈希:
{
"item[0][size]" => "12",
"item[0][count]" => "1"
}
對此:
{
"item": {
"0": {
"size": "12",
"count": "1"
}
}
}
您能否就如何最優雅地實現這一目標提出建議? 也許我可以重用一些 ActionPack 用於解析參數字符串的實用方法?
您可以重用rack
庫方法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"}}}
在這里找到。
經過一番研究,我找到了一種使用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"
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.