簡體   English   中英

如何將帶有表示嵌套的鍵的哈希轉換為嵌套哈希

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM