php - 将 json 转换为多维 PHP 数组
问题描述
我将以下 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] =>
)
推荐阅读
- python - 在 Selenium 中更改 ROBLSECURITY Cookie
- android - 使用 View Binding 的每个绑定类是否都有父类?
- r - 使用dwplot按参数显示不同颜色的系数
- javascript - 以正确的顺序在 .map 循环中执行异步请求
- django - Django 使用 URL 调度程序
- firebase - 如何将 Cloud Firestore 与 Gin 框架连接起来?
- oracle - ORA-00936: 缺少表达式 -- codeigniter
- vue.js - twitter:图像对于 Vue.js 应用程序不可见
- java - 我的代码有什么错误?我试图从 2 天开始理解它?
- javascript - 我正在尝试在 Node.Js 上调用 QuickBook 的 API,但我收到以下错误