Project

General

Profile

Bug #12955

Updated by nobu (Nobuyoshi Nakada) over 7 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

Back