以下JSON结构:
{
"details":
[
{"specific_exercise.distance" : "14",},
{"specific_exercise.avg_pace" : "7.5"}
]
}
在使用json_decode()时转换为此:
stdClass Object
(
[details] => Array
(
[0] => stdClass Object
(
[specific_exercise.distance] => 14
)
[1] => stdClass Object
(
[specific_exercise.avg_pace] => 7.5
)
)
)
相反,我想把它转换成这个:
stdClass Object
(
[details] => Array
(
[specific_exercise.distance] => 14
[specific_exercise.avg_pace] => 7.5
)
)
从json_decode()结构转换为更有效的PHP结构的最佳方法是什么?
答案 0 :(得分:2)
如果您可以控制,那么更改JSON可能是更好的解决方案,例如
{
"details":
{
"specific_exercise.distance" : "14",
"specific_exercise.avg_pace" : "7.5"
}
}
修改强>
然后你可以使用这个方法:
function parseJsonFormat($json)
{
$json_object = json_decode($json);
$details_result = array();
foreach($json_object['details'] as $detail)
{
$details_result = array_merge($details_result, get_object_vars($detail));
}
$json_object['details'] = $details_result;
return $json_object;
}
您可以进一步修改方法以适用于每个数组,而不仅仅是详细信息键。
答案 1 :(得分:2)
将多个关联子阵列拼凑在一起使用:
call_user_func_array("array_merge", (array)$subarray)
在您的情况下,$subarray
表示details
,您将结果分配回来。
仅适用于数组,而不适用于对象,因此最好首先使用第二个参数指示json_decode
。