我正在序列化rails 2.3.2JSON中的ActiveRecord模型,并注意到JSON值被序列化为没有引号的to_json,然而,BigNum使用64位来表示大数,并且只有~52(?)在这些位中,整数部分可用,其余的用于指数。
所以我的17位数字变成了四舍五入。
在Firebug控制台中尝试以下操作:
console.log(123456789012345678)因此,我认为json编码器应该足够智能,能够引用太大而javascript引擎无法处理的数字。我如何修复rails才能做到这一点呢?或者,有没有办法覆盖模型上单个属性的编码(我不想在其他地方使用to_s )?
谢谢。
发布于 2009-07-28 21:54:44
我根据另一个帖子提出了一个可行的解决方案:Array of ActiveRecords to JSON
def to_json(options = {})
hash = Serializer.new(self, options).serializable_record.reject {|key, value| value.nil? || key == "big_num_field"}
hash[:big_num_field] = big_num_field.to_s
hash.to_json
end这仍然不是最优的,因为我更愿意让序列化程序自动处理。
https://stackoverflow.com/questions/1196685
复制相似问题