【发布时间】:2014-05-08 14:48:13
【问题描述】:
我使用 curl 向服务器发送 GET 请求并取回 json 数据。当我在浏览器中打印这些数据时,我可以看到没有斜杠的正确 json 结构(魔术引号已关闭)——完全没有问题。
即使我将这个 json 数据从浏览器复制粘贴到变量中的另一个 php 文件,然后尝试对其进行解码,它也可以正常工作。数据在该文件中解码。
但是,当我尝试解码数据时从 cURL 请求中获取数据后,它失败了。它返回的只是:Array
这是我正在尝试的:
$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 来查看数组的结构。有点像这样:
当我尝试使用以下方式访问元素 ID 时:
echo $d[response][docs][0][id];
我收到一条通知,说明:使用未定义的常量响应 - 在该行假定为“响应”。这是什么意思??
【问题讨论】:
-
你为
curl_setopt设置了什么?如果你var_dump($resp)显示什么? -
ok 一些进展.....我可以使用 print_r 看到数组的结构,这意味着 json 已解码,但仍然无法访问元素