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


How to convert object data into json string in PHP?

我在对象中得到结果,想转换成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"}

任何想法。

谢谢。

问题不在于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"}

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

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

尝试

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

使用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);

type casting上,您可以将它们更改为类似的数组

$array = (array) $my_object;

甚至你也可以像一样使用get_object_vars

$array = get_object_vars($my_object);

或者从您的PDO查询结果来看,它们是array

对象的JSON编码不是很好,但您可以先将其转换为关联数组,然后再转换为JSON:例如

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