$ irb
> require 'oj'
> Oj.default_options = { mode: :compat }
> Oj.load('3.14159265358979323846')
> Oj.load('3.141592653589793')
DO 3.10.18 comportamiento
> Oj.load('3.14159265358979323846')
=> 0.314159265358979323846e1
> Oj.load('3.141592653589793')
=> 3.141592653589793
después del DO 3.11.0
> Oj.load('3.14159265358979323846')
=> 3.141592653589793
> Oj.load('3.141592653589793')
=> 3.141592653589793
https://github.com/ohler55/oj/blob/2e83d4dd46f0cf40ce1209b62629f87c9389673d/ext/oj/oj.c#L596 -L600
compat_bigdec
se espera booleano, pero asigna BigLoad. ¿Es correcto?
Creo que has encontrado un error. Lo arreglaré mañana. Buena atrapada. Básicamente, cualquier valor sería tratado como verdadero.
Intente con la rama bug/decimal-class.
Gracias.
El comportamiento de la rama bug/decimal-class se encuentra a continuación.
> Oj.load('3.14159265358979323846')
=> 3.141592653589793
> Oj.load('3.141592653589793')
=> 3.141592653589793
¿AutoDec se convirtió en un modo de compatibilidad inutilizable?
Si. compat imita el JSON que no tiene el :bigdecimal_load
que tiene Oj. La alternativa de la gema JSON es :decimal_class
que puede ser Flotante o BigDecimal. No es una característica documentada de la gema JSON, pero existe. Para usar la opción Oj :bigdecimal_load
, el modo personalizado es el mejor.
Gracias por tu consejo. Cambio para usar el modo personalizado.
La confirmación de rama de error/clase decimal me parece buena 👍
Gracias. Liberaré hoy.
Publicado. 39
Gracias por la liberación rápida.