使用JSON_encode在JSON中键入(integer,Boolean,..)

时间:2014-05-20 23:02:42

标签: php json

我有一个类似于:

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

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

3 个答案:

答案 0 :(得分:2)

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

<?php

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

答案 1 :(得分:2)

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

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

对于字符串转换问题; json_encode()的第二个参数是options(位掩码)。可用选项列在here中。您的案例中的相关选项是JSON_NUMERIC_CHECK,这将阻止您的数字转换为生成的JSON中的字符串:

$json = json_encode($data, JSON_NUMERIC_CHECK);

答案 2 :(得分:0)

id是整数。使pass布尔值设置为boolean(使用truefalse)或将其转换为布尔值:

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