我正在Rails 2.3.2 to_json中序列化ActiveRecord模型,并注意到BigNum值已序列化为JSON,但没有引号,但是,javascript使用64位来表示大数,并且这些位中只有〜52(?)可用于整数部分,其余部分用于指数计算。
所以我的17位数字四舍五入,grrr。
在Firebug控制台中尝试以下操作:
console.log(123456789012345678)
因此,我认为json编码器应该足够聪明,以引用对于javascript引擎无法处理的数字。我该如何固定导轨呢?或者,是否有一种方法可以覆盖模型上单个属性的编码(我不想在其他地方使用to_s)?
谢谢。
最佳答案
我已经根据另一篇文章提出了一个可行的解决方案: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
这仍然不是最佳选择,因为我宁愿让序列化程序自动处理。