我得到了对象的结果,想要转换成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"}
任何想法。
感谢。
答案 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,只需运行$assoc
到json_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)