我在对象中得到结果,想转换成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,只需运行$assoc
到json_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)