Tengo un modelo que está configurado con una respuesta JSON de una base de datos mysql. Los datos del modelo se establecen con verdadero o falso en un campo booleano / tinyint en la base de datos, que usa 1
o 0
.
En mi opinión, tengo un enlace que busca un booleano con subrayado _.isBoolean
. Por supuesto, cuando mi modelo recibe los datos, se establece con 1
o en 0
lugar de verdadero o falso y la _.isBoolean
verificación falla.
¿Hay alguna forma de que mi respuesta JSON de mysql sea correctamente un valor booleano verdadero o falso en lugar de 1
o 0
, o preferiblemente, hay alguna manera de que mi modelo se actualice al recuperar (y antes de que se procese la vista) para transmitir true
o false
basarse en es propiedad 1 o 0?
por ejemplo, los datos de mi modelo se ven como {"isChecked":"1"}
cuando los necesito{"isChecked":true}
¡Muchas gracias por cualquier sugerencia que pueda tener!
fuente
Respuestas:
Todo lo que necesita es convertir
string
aint
con+
y convertir el resultado a booleano con!!
:Puedes hacer esta manipulación en el
parse
método:ACTUALIZACIÓN : 7 años después, la
Number(string)
conversión me parece más elegante. Además, mutar un objeto no es la mejor idea. Habiendo dicho eso:fuente
int
primero.!!+"1"; // true
,!!+"0"; // false
,!!+1; // true
,!!+0; // false
Use un doble no:
fuente
value = (!!parseInt(value) ? true : false)
!!2
o cualquier otro número= false
, ¿verdad?Aquí hay otra opción que es más larga pero que puede ser más legible:
fuente
Asignación de comparación al valor de la propiedad
JavaScript
Puede asignar la comparación de la propiedad a
"1"
Esto solo se evalúa para un valor de cadena de
"1"
aunque. Otras variables se evalúan como falsas, ya que una realtypeof number
sería falsa. (es decirobj["isChecked"]=1
)Si desea ser indiscriminado con
"1"
o1
, puede usar:Salidas de ejemplo
PHP
Mismo concepto en PHP
Se aplican las mismas limitaciones de operador que se indicaron anteriormente para JavaScript.
Doble no
El 'doble no' también funciona. Es confuso cuando la gente lo lee por primera vez, pero funciona en ambos idiomas para valores de tipo entero / numérico. Sin embargo, no funciona en JavaScript para valores de tipo de cadena, ya que siempre se evalúan como verdaderos:
JavaScript
PHP
fuente