类型(integer, Boolean,.)在JSON中使用JSON_encode



我有一个类似的数组:

        [0] => stdClass Object
            (
                [name] => John                    
                [id] => 1
                [pass] => 0
            )

数组由sql查询返回。现在我需要使用json_encode,我希望id是整数并传递布尔值,但在json_encode之后它们得到字符串类型。如何在json_encode中使用正确的数据类型?

您可以遍历数组,将每个带有pass键的值转换为布尔值,并将每个id转换为整数,如下所示:

<?php
foreach ($results as $result) {
    $result->id = (int) $result->id;
    $result->pass = (bool) $result->pass;
}

对于类型转换,您可以首先遍历列表并强制转换相关属性:

foreach($data as $d)
{
    $d->id = (int)$d->id;
    $d->pass = (bool)$d->pass;
}

用于字符串转换问题;json_encode()的第二个参数是options(位掩码)。这里列出了可用的选项。在您的示例中,相关选项是JSON_NUMERIC_CHECK,它将防止您的数字在结果JSON中被转换为字符串:

$json = json_encode($data, JSON_NUMERIC_CHECK);

id为整数。设置pass为布尔值,将其设置为boolean(使用true, false)或将其强制转换为布尔值:

$obj->pass = (bool)$obj->pass;

最新更新