JSON后的垃圾——PHP数组问题YQL
我正在使用 YQL 将数据发送回我正在开发的 iPhone 应用程序。我的 iPhone 上有一个 JSON 解析器,我的网络主机上有一个 PHP 页面。
这是 PHP:
<?php
header('Content-type: application/json');
$arr = array();
$result = $_GET["q"];
$yql_base_url = "http://query.yahooapis.com/v1/public/yql";
$yql_query = "select * from search.web where query ='%s'"; //YQL query to retrieve search results
$value = "lindsay+lohan";
$yql_query_url = $yql_base_url . "?q=" . urlencode(sprintf($yql_query, $value)) . "&format=json";
$session = curl_init($yql_query_url);
$json = curl_exec($session);
curl_close($session);
$temp = json_decode($json);
$arr[] = $temp;
echo json_encode($arr);
?>
当我使用我的 iPhone 应用程序并尝试检索它时,它显示“Json 解析失败:JSON 之后的垃圾”
如果我在浏览器中运行 PHP 文件,我会看到所有 JSON 数据都很好,但在它后面有“[1] “,我认为这把事情搞砸了?
有什么想法吗?
i'm using YQL to send data back to an iPhone app i'm developing. I've got a JSON parser on the iphone and a PHP page on my webhost.
This is the PHP:
<?php
header('Content-type: application/json');
$arr = array();
$result = $_GET["q"];
$yql_base_url = "http://query.yahooapis.com/v1/public/yql";
$yql_query = "select * from search.web where query ='%s'"; //YQL query to retrieve search results
$value = "lindsay+lohan";
$yql_query_url = $yql_base_url . "?q=" . urlencode(sprintf($yql_query, $value)) . "&format=json";
$session = curl_init($yql_query_url);
$json = curl_exec($session);
curl_close($session);
$temp = json_decode($json);
$arr[] = $temp;
echo json_encode($arr);
?>
When i use my iphone app and attempt to retrieve it, it says "Json parse failed: Garbage after JSON"
And if i run the PHP file in a browser, i see all the JSON data fine but after it there is "[1]", which is screwing it up i think?
Any ideas?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
重要提示:除非您指定
CURLOPT_RETURNTRANSFER
选项,cURL 将输出响应并返回true
。这就是这里发生的情况:响应(一些 JSON)直接输出到浏览器,然后是您在最后一行执行的echo json_encode(array(1))
。要么不要尝试处理响应,要么使用
CURLOPT_RETURNTRANSFER
。Important: unless you specify the
CURLOPT_RETURNTRANSFER
option, cURL will output the response and returntrue
. This is what happens here: the response (which is some JSON) is output directly to the browser, followed by theecho json_encode(array(1))
you do on the last line.Either don't try to process the response, or use
CURLOPT_RETURNTRANSFER
.