作者热门文章
- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我需要将包含一些 BigDecimal 字段的 Ruby 哈希转换为 JSON。
我需要将 BigDecimal 转换为 float /整数,但“json”库总是将其转换为科学记数法。
require 'json'
require 'bigdecimal'
obj = {}
obj['created_at'] = BigDecimal('0.12345')
puts "JSON.dump(obj) = #{JSON.dump(obj)}"
puts "JSON.generate(obj) = #{JSON.generate(obj)}"
puts "JSON.fast_generate(obj) = #{JSON.fast_generate(obj)}"
puts "JSON.pretty_generate(obj) = #{JSON.pretty_generate(obj)}"
结果:
JSON.dump(obj) = {"created_at":"0.12345e0"}
JSON.generate(obj) = {"created_at":"0.12345e0"}
JSON.fast_generate(obj) = {"created_at":"0.12345e0"}
JSON.pretty_generate(obj) = {
"created_at": "0.12345e0"
}
是否有任何 JSON 库可以指定数字格式,以便在解析对象时,BigDecimal 字段不会转换为科学记数法?
obj['created_at'] = BigDecimal.new('0.12345')
JSON.parse(obj) = { "created_at": "0.12345" } # not 0.12345e0
我正在使用 ruby 2.4.1p111
最佳答案
BigDecimal('0.12345').to_f
应该会给你想要的结果。
更新:
JSON.parse(BigDecimal('0.12345').to_s) # => 0.12345
JSON.parse(BigDecimal('0.12345').to_s).to_s # => "0.12345"
关于json - Ruby json 库将 BigDecimal 转换为科学记数法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45421201/
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引起辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the he
我是一名优秀的程序员,十分优秀!