0

任何人都可以帮忙吗?

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' 属性在数据库中是 BOOLEAN(我已经尝试过使用 BIT 数据类型,但结果相同)。

然后是带有 json_encode 的 JSON:

{"DTOList":
{"idUsuario":"1",
"Email":"user@theemail.com.ar",
"Password":"1234","Nombre":"Sebasti\u00e1n","Apellido":"Black","Habilitado":"1"...
4

2 回答 2

2

那是对的。MySQL 将所有内容都作为字符串返回,除了NULL按原样传递的内容。

另一件需要注意的是,这BOOLEAN只是TINYINT(1)where 0isFALSE和所有其他值 are的别名TRUE

于 2013-05-17T17:44:25.593 回答
1

我遇到了类似的问题,尽管我在 PDO 中使用了 FETCH_ASSOC 而不是 FETCH_OBJ。您可以“投射”(提示)这些字段,它们将按照您在 JSON 中的预期显示。在您的示例中,这可能有效(将其放在 之前json_encode):

$obj->idUsuario = (int) $obj->idUsuario;
$obj->Habilitado = (bool) $obj->Habilitado;
于 2013-05-17T18:32:43.977 回答