开发者

using different key for to_json :methods

When using :methods in to_json, is there a way to rename the key? I'm trying to replace the real id with a base62 version of it, and I want the value of base62_id to have the key :id.

@obj.to_json(
    :except => :id
    :methods => :base62_id
)

I tried to do

@obj.to_json(
    :except => :id
    :methods => { :id => :base62_id }
)

but that didn't work.开发者_如何学JAVA

Any advice?


The to_json serializer uses the name of the method as the key for serialization. So you can't use the methods option for this. Unfortunately to_json method doesnt acceptblock` parameter, otherwise you could have done something similar to

@obj.to_json(:except => :id) {|json| json.id = base62_id }

So that leaves us with a ugly hack such as:

def to_json(options={})
  oid, self.id  = self.id, self.base62_id(self.id) 
  super
ensure
  self.id = oid
end

Now to_json will return the expected result.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜