有人可以帮忙吗?
mysql_fetch_object将所有属性作为类型字符串返回。 我需要将对象转换为JSON,但保留数值和布尔值。
解析所有查询的结果JSON非常慢。 这是我查询var_dump的结果。
$obj = mysql_fetch_object($result)
var_dump($obj);
...
object(stdClass)[10]
public 'idUsuario' => string '1' (length=1)
public 'Email' => string 'user@theemail.com.ar' (length=23)
public 'Password' => string '1234' (length=4)
public 'Nombre' => string 'Sebastián' (length=10)
public 'Apellido' => string 'Black' (length=7)
public 'Habilitado' => string '1' (length=1)
...
'Habilitado'属性在DataBase中是BOOLEAN(我已尝试使用BIT数据类型,但结果相同)。
然后JSON与json_encode:
{"DTOList":
{"idUsuario":"1",
"Email":"user@theemail.com.ar",
"Password":"1234","Nombre":"Sebasti\u00e1n","Apellido":"Black","Habilitado":"1"...
答案 0 :(得分:2)
这是正确的。 MySQL将所有内容作为字符串返回,但NULL
除外,它按原样传递。
需要注意的另一点是,BOOLEAN
只是TINYINT(1)
的别名,其中0
为FALSE
,其他所有值均为TRUE
。
答案 1 :(得分:1)
虽然我在PDO中使用了FETCH_ASSOC而不是FETCH_OBJ,但我遇到了类似的问题。
您可以“强制转换”(提示)字段,它们将按照您的期望在JSON中显示。在您的示例中,这可能有效(将其放在json_encode
之前):
$obj->idUsuario = (int) $obj->idUsuario;
$obj->Habilitado = (bool) $obj->Habilitado;