class BigDecimal
def as_json(options = nil) # :nodoc:
real value.
BigDecimal, it still has the chance to post-process the string and get the
if the other end knows by contract that the data is supposed to be a
That's why a JSON string is returned. The JSON literal is not numeric, but
other than manually inspecting the string with the JSON code itself.
those libraries would get in general a wrong number and no way to recover
however, parse non-integer JSON numbers directly as floats. Clients using
A BigDecimal would be naturally represented as a JSON number. Most libraries,
def as_json(options = nil) # :nodoc: finite? ? to_s : nil end