我發現一個方法來改變JSON對象的一個重要的名字是在紅寶石的哈希像下面需要觀念改變JSON對象的一個重要的名字RUBY
源
{ "a" => "b", "b" => "bb" }
結果
{ "c" => "b", "b" => "bb" }
有個好主意嗎?
我發現一個方法來改變JSON對象的一個重要的名字是在紅寶石的哈希像下面需要觀念改變JSON對象的一個重要的名字RUBY
源
{ "a" => "b", "b" => "bb" }
結果
{ "c" => "b", "b" => "bb" }
有個好主意嗎?
如果您正在序列化ActiveRecord或ActiveModel對象,則可以覆蓋該類的as_json
方法。像這樣:
class Foo < ActiveRecord::Base
def as_json(options = { })
super((options.select {|k,v| k.to_s != "a" }).merge("c" => options["a"]))
end
end
如果你經常需要這個功能,你可以擴展Ruby Hash類。
實施將改變從紅寶石版本的升級,但大致是這樣的:
class Hash
module ClassMethods
def self.replace_key(old_key, new_key)
self[new_key] = self[old_key]
self.delete(old_key)
end
end
end
上講,創建一個新的密鑰,值對的哈希使用新密鑰和舊值。然後刪除原來的一對。
注意:從性能的角度來看,大哈希上的這種操作是不可取的。
source = { "a" => "b", "b" => "bb", "c" => "lol" }
PATTERN = { "a" => "c", "c" => "e" }
source.inject({}) do |new_hash, (k, v)|
key = PATTERN[k] || k
new_hash[key] = v
new_hash
end
#=> { "c" => "b", "b" => "bb", "e" => "lol" }
http://stackoverflow.com/questions/9603567/change-all-key-names-of-json-object-in-ruby – fl00r 2012-03-07 14:59:21