cURL调用后json_decode无效

时间:2014-05-08 14:48:14

标签: php curl get json

我使用curl向服务器发送GET请求并获取json数据。当我在浏览器中打印这些数据时,我可以看到没有斜线的正确json结构(魔术引号关闭) - 根本没有问题。

即使我将这个json数据从浏览器粘贴到变量中的另一个php文件,然后尝试解码它也能正常工作。数据在该文件中解码。

但是,当我尝试解码数据时从cURL请求获取数据后,它失败了。它返回的全部是:数组

以下是我的尝试:

$resp = curl_exec($curl);
$d=json_decode($resp,true);

我不知道为什么这种奇怪的行为? 我已经尝试了这个帖子json_decode returns NULL after webservice call

中提到的几乎所有内容

我还检测到使用mb_detect_encoding进行cURL调用返回的字符串编码,它是UTF-8

这件事让我发疯了......

更新:好的.....似乎json_decode已经解码了数据并返回$ d变量,但我无法从数组中访问该元素。我使用 print_r 来查看数组的结构。有点像这样:

Array ( 
    [response] => Array ( 
                    [start] => 0 
                    [docs] => Array ( 
                              [0] => Array ( 
                                       [id] => S132250037010452  
                                       [slno] => 452 
                                     ) 
                            )
                    [numFound] => 1 
                  ) 
) 



当我尝试使用:

访问元素id时
echo $d[response][docs][0][id];

我收到一条通知说明:使用未定义的常量响应 - 假设“#response”响应'在那条线上。这是什么意思??

1 个答案:

答案 0 :(得分:0)

修改完成后,要访问此字段,您需要将其隐藏在'

之间
echo $d['response']['docs'][0]['id']; // <--- Will return 'S132250037010452'

如果您不附上名称,PHP将尝试用作常量