我正在运行一个返回JSON响应的rest api调用,我想在PHP中处理它。响应是一系列数组,格式如下:
[
{
"id": "auc48x87ts3oE9l6F0h7",
"label": "Facebook",
"linkUrl": "https://someurl.com",
"logoUrl": "https://someurl.com/facebook.png",
"appName": "facebook",
},
{
"id": "auc4bd9we0llNsFtz0h7",
"label": "Bank of America CashPro",
"linkUrl": "https://someurl.com",
"logoUrl": "https://someurl.com/bankofamericacashpro.png",
"appName": "bankofamericacashpro",
}]
我想遍历整个响应,我可以得到一个很好的appName值列表。
在我的代码中,我无法在第一个应用程序的所有应用程序中检索应用程序名称,永远不会找到任何其他应用程序 -
$output = curl_exec($curl);
// have to get rid of leading trash on return for json_decode to work
$output = "[" . strstr( $output, "{" ) . "]";
//decode
$jsonObject = json_decode($output, true);
//get app name
$appname = $jsonObject['appName'];
我的问题是,为什么$ appName变量不存储任何值?一旦修复了,我该如何创建一个循环来响应响应中的每个数组?这里的foreach循环是否合适?
非常感谢
答案 0 :(得分:1)
你必须迭代
$jsonObject = json_decode($output, true);
foreach($jsonObject as $obj){
echo $obj['appName'];
}
答案 1 :(得分:0)
// have to get rid of leading trash on return for json_decode to work $output = "[" . strstr( $output, "{" ) . "]";
不,你不要!你接收了[]
所针对的一系列对象(例如:[1,2,{"id"=42},4]
),所以你应该将它解析为数组,如第一句所述