use*_*882 50 ruby hash ruby-on-rails ruby-on-rails-3
我正在使用Ruby on Rails 3.2.2,我想"轻松"/"快速"地将散列键从Symbol
s 更改为String
s.也就是说,从{:one => "Value 1", :two => "Value 2", ...}
到{"one" => "Value 1", "two" => "Value 2", ...}
.
如何通过尽可能少地使用代码来实现?
Vik*_*rón 76
只需调用stringify_keys(或stringify_keys!)
http://apidock.com/rails/Hash/stringify_keys
jdo*_*doe 17
使用stringify_keys
/ 类的stringify_keys!
方法Hash
.
您还可以使用some_hash.with_indifferent_access
返回哈希实例,其中您的键可以指定为符号或字符串没有区别.
eli*_*eli 11
stringify_keys
很好,但只在Rails中可用.这是我如何在一行中完成它,没有依赖关系:
new_hash = Hash[your_hash.collect{|k,v| [k.to_s, v]}]
Run Code Online (Sandbox Code Playgroud)
这适用于Ruby 1.8.7及更高版本.如果您使用的是Ruby 2.1,则可以:
new_hash = a.collect{|k,v| [k.to_s, v]}.to_h
Run Code Online (Sandbox Code Playgroud)
请注意,此解决方案不是递归的,也不会正确处理"重复"键.例如.如果你有:key
和"key"
你的哈希中的键,最后一个将优先并覆盖第一个.
hash = hash.transform_keys(&:to_s)
将所有键从符号转换为字符串。
更多信息:https : //ruby-doc.org/core-2.6.3/Hash.html#method-i-transform_keys
这是在 ruby 2.5 中添加的:https : //bugs.ruby-lang.org/issues/13583
小智 5
http://api.rubyonrails.org/classes/Hash.html#method-i-stringify_keys
hash = { name: 'Rob', age: '28' }
hash.stringify_keys
# => { "name" => "Rob", "age" => "28" }
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
38166 次 |
最近记录: |