如何使用ruby更改小写的哈希键

Ask*_*kar 4 ruby hash lowercase

给定嵌套文档的哈希:

myHash = {
  "MemberId"=>"ABC0001", 
  "MemberName"=>"Alan", 
  "details"=>[
    {"LineNumber"=>"4.1", "Item"=>"A0001", "Description"=>"Apple"}, 
    {"LineNumber"=>"5.1", "Item"=>"A0002"}, 
    {"LineNumber"=>"6.1", "Item"=>"Orange"}
  ]
}
Run Code Online (Sandbox Code Playgroud)

我想改变它所以它看起来像:

{
  "memberid"=>"ABC0001", 
  "membername"=>"Alan", 
  "details"=>[
    {"linenumber"=>"4.1", "item"=>"A0001", "description"=>"Apple"}, 
    {"linenumber"=>"5.1", "item"=>"A0002"}, 
    {"linenumber"=>"6.1", "item"=>"Orange"}
  ]
}
Run Code Online (Sandbox Code Playgroud)

换句话说,我想在散列键中更改为小写.我知道我将不得不遍历哈希并使用downcase方法.如果有任何简单的方法在红宝石中这样做?

Tou*_*aza 8

你可以简单地做

hash.transform_keys(&:downcase)
Run Code Online (Sandbox Code Playgroud)

将哈希键更改为小写。

你可以参考我的回答/sf/answers/3786312491/

  • 这是最好的答案。如果您有嵌套哈希,您应该使用“deep_transform_keys” (2认同)

saw*_*awa 5

class Hash
  def downcase_key
    keys.each do |k|
      store(k.downcase, Array === (v = delete(k)) ? v.map(&:downcase_key) : v)
    end
    self
  end
end

myHash.downcase_key
Run Code Online (Sandbox Code Playgroud)