【问题标题】:Rails ActiveRecord BigNum to JSONRails ActiveRecord BigNum 转 JSON
【发布时间】:2009-07-28 20:56:11
【问题描述】:

我在 rails 2.3.2 to_json 中序列化一个 ActiveRecord 模型,并注意到 BigNum 值被序列化为不带引号的 JSON,但是,javascript 使用 64 位来表示大数字,并且只有大约 52(?)位可用整数部分,其余为指数部分。

所以我的 17 位数字被四舍五入了,grrr。

在 Firebug 控制台中尝试以下操作:

console.log(123456789012345678)

所以,我认为 json 编码器应该足够聪明,可以引用对于 javascript 引擎来说太大而无法处理的数字。我如何修复导轨来做到这一点?或者,有没有办法覆盖模型上单个属性的编码(我不想在其他地方使用 to_s)?

谢谢。

【问题讨论】:

    标签: javascript ruby-on-rails ruby json


    【解决方案1】:

    我根据另一个帖子提出了一个可行的解决方案: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
    

    这仍然不是最佳选择,因为我宁愿让序列化程序自动处理。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-10
      • 2023-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多