[英]Convert a json to multi-dimensional PHP array
我將以下 json 發送到我的 API 端點
{"key":"levels","value":"[{role_id:1, access_level_id:3}, {role_id:2, access_level_id:1}, {role_id:3, access_level_id:2}]","description" :""}
在后端,我將其作為 Laravel 請求接收,如下所示:
public function functionName(Request $request){
$req=$request->all();
Log::debug($req['value']);
return;
}
它返回以下預期結果
數組 ('key' => 'levels', 'value' => '[{role_id:1, access_level_id:3}, {role_id:2, access_level_id:1}, {role_id:3, access_level_id:2}]', '描述' => NULL, )
但我還需要將“值”轉換為數組。 這樣我就可以擁有一個多維的 PHP 數組。 所以我希望得到類似的東西
數組 ('key' => 'levels', 'value' => array( array('role_id'=>1, 'access_level_id'=>3), array('role_id'=>2, 'access_level_id'=>1 ), array('role_id'=>3, 'access_level_id'=>2) ) 'description' => NULL, )
但是在我的 Laravel 方法中,我執行以下操作:
public function share_doc(Request $request){
$req=$request->all();
Log::debug(json_decode($req['value'],true));
return;
}
試圖將作為“值”接收到的 json 轉換為 PHP 數組,它不返回任何內容 - 即沒有值,沒有數組,沒有字符串。 根本不值一提。
所以,我在這里的困難是如何將作為“值”從請求中接收到的整個 json 字符串轉換為 PHP 數組,以便我可以使用 PHP 遍歷這些項目
感謝您的幫助
您的問題是value
元素不是有效的 JSON,因為鍵沒有被引用。 對於您提供的示例數據,您可以使用preg_replace
修復它,然后json_decode
更改的值:
$x['value'] = json_decode(preg_replace('/(\w+)(?=:)/', '"$1"', $x['value']), true);
print_r($x);
輸出:
Array
(
[key] => levels
[value] => Array
(
[0] => Array
(
[role_id] => 1
[access_level_id] => 3
)
[1] => Array
(
[role_id] => 2
[access_level_id] => 1
)
[2] => Array
(
[role_id] => 3
[access_level_id] => 2
)
)
[description] =>
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.