BigDecimalフィールドを含むRubyハッシュをJSONに変換する必要があります。Ruby jsonライブラリからBigDecimalを科学記法に変換する
私はBigDecimalをFloat/Integerに変換する必要がありますが、 'json' libは常にそれを科学的表記に変換します。
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"
}
私はオブジェクトを解析する際に、BigDecimalのフィールドは、科学的表記に変換されることはありません数の書式を指定することができます任意のJSON libにはありますか?
obj['created_at'] = BigDecimal.new('0.12345')
JSON.parse(obj) = { "created_at": "0.12345" } # not 0.12345e0
私はあなたの望ましい結果を与える必要がありますルビー2.4.1p111
'a = BigDecimal( '0.12345')'と 'a.to_f'のようなことをするとどうなりますか? – Abhinay
知っていますが、知りたいのはJSON.parse(a)= 0.12345 – wduan
を更新する方法です私の答え – Abhinay