Bug #12955
Updated by nobu (Nobuyoshi Nakada) about 8 years ago
Currently, `Float::INFINITY` Float::INFINITY and `Float::NAN` Float::NAN error out when we try to convert them into JSON representation using `as_json` or `to_json` based on the following code from /ruby/ext/json/generator.c ~~~ c if (!allow_nan) { if (isinf(value)) { fbuffer_free(buffer); rb_raise(eGeneratorError, "%u: %"PRIsVALUE" not allowed in JSON", __LINE__, RB_OBJ_STRING(tmp)); } else if (isnan(value)) { fbuffer_free(buffer); rb_raise(eGeneratorError, "%u: %"PRIsVALUE" not allowed in JSON", __LINE__, RB_OBJ_STRING(tmp)); } } ~~~ Should same treatment be applied to `BigDecimal::INFINITY` BigDecimal::INFINITY and `BigDecimal::NAN`? BigDecimal::NAN? Here is the RFC link which says that *Numeric values that cannot be represented as sequences of digits such as Infinity and NaN) are not permitted* - https://www.ietf.org/rfc/rfc4627.txt