如何在PHP中将对象数据转换为json字符串?

时间:2014-10-28 13:29:52

标签: php json

我得到了对象的结果,想要转换成json,我不明白怎么做,所以我需要帮助。

我的object看起来像这样:

Array
(
    [0] => stdClass Object
        (
            [user_id] => 85
            [username] => Chang Sindelar
        )

    [1] => stdClass Object
        (
            [user_id] => 84
            [username] => Ezekiel Watterson
        )

    [2] => stdClass Object
        (
            [user_id] => 83
            [username] => Sylvester Hillebrand
        )
)

我想转换为json字符串。我需要这样的结果:

{"85":"Chang Sindelar","84":"Ezekiel Watterson","83":"Sylvester Hillebrand"}

任何想法。

感谢。

6 个答案:

答案 0 :(得分:1)

问题不在于JSON编码,而在于对象属性到关联数组的映射。

可以使用array_reduce

将对象映射到一个关联数组
$array = [
    (object) ['user_id' => 85, 'username' => 'Chang Sindelar'],
    (object) ['user_id' => 84, 'username' => 'Ezekiel Watterson'],
    (object) ['user_id' => 83, 'username' => 'Sylvester Hillebrand']
];

$assoc = array_reduce($array, function($result, $item) {
    $result[$item->user_id] = $item->username;
    return $result;
}, []);

$assoc变量现在将包含一个关联数组,如下所示:

array(3) {
  [85]=>
  string(14) "Chang Sindelar"
  [84]=>
  string(17) "Ezekiel Watterson"
  [83]=>
  string(20) "Sylvester Hillebrand"
}

要获取JSON,只需运行$assocjson_encode

$json = json_encode($assoc);
// {"85":"Chang Sindelar","84":"Ezekiel Watterson","83":"Sylvester Hillebrand"}

答案 1 :(得分:0)

type casting上,您可以将它们更改为数组,如

$array = (array) $my_object;

甚至您可以使用get_object_vars之类的

$array = get_object_vars($my_object);

或者从您的PDO查询中将结果显示为array

答案 2 :(得分:0)

使用for循环并在使用json_encode之后创建一个新的向量(数组),例如:

$vector = array();
$size = count($obj); //$obj contain your "array"
for ($i = 0; $i < $size; $i++) {
   $vector[((string) $obj[$i]->user_id)] = $obj[$i]->username;
}

echo json_encode($vector);

答案 3 :(得分:0)

使用此函数会将对象返回到该对象的属性数组中。

array get_object_vars ( object $object )
return get_object_vars($your_object_variable_here)

答案 4 :(得分:0)

尝试

foreach($arr as $v) {
 $newarr[$v->user_id] = $v->username;
}
echo json_encode($newarr);

答案 5 :(得分:-1)

对象不要JSON编码很好,但你可以先将它转换为关联数组,然后转换为JSON:例如

$array =  (array) $yourObject;
$jsonstring = json_encode ($array)