我正在覆盖to_json
。
当我在模型上调用to_json
时,我得到以下内容:
{ "integer1": "23", "integer2": "2", "integer3": "4", ... }
我希望to_json
返回:
{ "Something": "23", "SomethingElse": "2", "AnotherThing": "4", ... }
我有一个包含密钥及其映射的数组:
"integer1" => "Something", "integer2" => "SomethingElse", "integer3" => "AnotherThing", ....
我怎样才能做到这一点?
答案 0 :(得分:4)
将哈希转换为您想要的内容:
h1 = { "integer1" => "23", "integer2" => "2", "integer3" => "4" }
h2 = { "integer1" => "Something", "integer2" => "SomethingElse", "integer3" => "AnotherThing" }
desired = Hash[ h1.map{ |k,v| [ h2[k], v ] } ]
从中获取您的JSON:
json = desired.to_json
答案 1 :(得分:2)
我强烈建议使用draper或类似的装饰器模式解决方案来创建对象的“JSON视图”。
您将拥有模型的装饰器,您可以在其上定义def as_json(options = {})
并返回要用作模型的JSON表示的数据的哈希值。这将它与模型分离,并允许您轻松地从数据的内部表示中修改模型的“数据视图”。