我找到一种方法来更改json对象的密钥名称,这是在ruby上的哈希,如下所示
来源
{ "a" => "b", "b" => "bb" }
结果
{ "c" => "b", "b" => "bb" }
有个好主意?
答案 0 :(得分:1)
如果您经常需要此功能,可以扩展Ruby Hash类。
实现因ruby版本而异,但大致类似于:
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
基本上,使用新密钥和旧值在哈希中创建新的密钥,值对。然后删除原始对。
注意:从性能角度来看,在大型哈希上执行此类操作是不可取的。
答案 1 :(得分:1)
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" }
答案 2 :(得分:0)
如果要序列化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