JSON后的垃圾——PHP数组问题YQL

发布于 2024-09-29 02:58:12 字数 833 浏览 8 评论 0 原文

我正在使用 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

年华零落成诗 2024-10-06 02:58:12

重要提示:除非您指定 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 return true. This is what happens here: the response (which is some JSON) is output directly to the browser, followed by the echo json_encode(array(1)) you do on the last line.

Either don't try to process the response, or use CURLOPT_RETURNTRANSFER.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文