这是我的PHP脚本。
do2:locu alexus$ cat venuesearch.php
<?php
$KEY='XXXXXXXXXXXXXXX';
$URL='http://api.locu.com/v1_0/venue/search/?api_key=';
$ch=curl_init();
curl_setopt($ch, CURLOPT_URL, $URL.$KEY);
curl_setopt($ch, CURLOPT_HEADER,0);
print_r(json_decode(curl_exec($ch),TRUE));
?>
do2:locu alexus$
locu
服务以JSON格式提供输出。当我运行脚本时,我得到所有输出都是长单行。
输出样本:
do2:locu alexus$ php venuesearch.php
{"meta": {"cache-expiry": 3600, "limit": 25}, "objects": [{"categories": ["restaurant"], "country": "United States",..........
我错过了什么?如何访问每个变量?将它转换成XML可能有意义吗?
* UPDATE * :在PHP: json_decode - Manual的示例#1中显示格式化输出,如果我使用true
然后我得到数组,我就不会得到格式输出也不是数组。
答案 0 :(得分:2)
尝试添加:
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
执行前。
看起来执行只是打印响应而不是将其作为字符串返回以供json_decode处理。
答案 1 :(得分:2)
您应该查看原始数据:
$json = curl_exec($ch);
var_dump($json);
只有在API返回json编码的json字符串时才能进行所描述的输出:
"{\"meta\": {\"cache-expiry\": 3600, \"limit\": 25}, \"objects\": [{\"categories\": [\"restaurant\"], \"country\": \"United States\",.......... '
(注意外部引号,它们是字符串的一部分)
这非常奇怪,绝对是API中的一个错误,但解决它的唯一方法是解码它两次:
$data = json_decode(json_decode($json));