Oj: Cambio de comportamiento del modo de compatibilidad

Creado en 26 ene. 2021  ·  8Comentarios  ·  Fuente: ohler55/oj

pasos para reproducir

$ irb
> require 'oj'
> Oj.default_options = { mode: :compat }
> Oj.load('3.14159265358979323846')
> Oj.load('3.141592653589793')

Comportamiento esperado

DO 3.10.18 comportamiento

> Oj.load('3.14159265358979323846')
=> 0.314159265358979323846e1
> Oj.load('3.141592653589793')
=> 3.141592653589793

Comportamiento real

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?

Todos 8 comentarios

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.

¿Fue útil esta página
0 / 5 - 0 calificaciones