首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用解析JSON结果

用解析JSON结果
EN

Stack Overflow用户
提问于 2013-07-01 09:16:57
回答 1查看 3.3K关注 0票数 6

我能够用我的API键从雅虎检索结果,使用在雅虎开发者网站上找到的说明。指南/codeexamples.html#

代码:

代码语言:javascript
复制
if ($_POST['query'])
{
$newline="<br />";
$query = urlencode("'{$_POST['query']}'");

require("OAuth.php");

$cc_key  = "key goes here";
$cc_secret = "secret goes here";
$url = "http://yboss.yahooapis.com/ysearch/web";
$args = array();
$args["q"] = "$query";
$args["format"] = "json";

$consumer = new OAuthConsumer($cc_key, $cc_secret);
$request = OAuthRequest::from_consumer_and_token($consumer, NULL,"GET", $url, $args);
$request->sign_request(new OAuthSignatureMethod_HMAC_SHA1(), $consumer, NULL);
$url = sprintf("%s?%s", $url, OAuthUtil::build_http_query($args));
$ch = curl_init();
$headers = array($request->to_header());
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_URL, $url);

curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); 
$rsp = curl_exec($ch);
$results = json_decode($rsp); 

print_r($results);

}

使用上面所示的print_r($results),我得到了如下结果(搜索“”所显示的前三个结果的摘录):

请注意,我已将网址更改为"WWW“,因为我要求至少有10个声誉才能发布超过2个LINKS.

stdClass对象(响应=> stdClass对象)( responsecode => 200web => stdClass对象)(启动=> 0计数=> 50总计结果=> 36800000结果=>数组)( => stdClass对象( date => clickurl => WWW url => WWW dispurl => en.wiki/ Elephant title => Elephant - Wikipedia ),免费的百科全书抽象stdClass Elephant具有多种功能,包括呼吸、嗅觉、观察到一头大象跪在前腿上觅食,.)1 => stdClass Object ( date => clickurl => WWW url => WWW dispurl => www.defenders.org/大象/基本事实标题=> Elephant => => elephant => Elephant => Elephants =>=>Elephant。大象的基本事实更多关于大象:对大象的威胁更多关于大象:基本事实。威胁。辩护人在帮什么忙。2 => stdClass对象( date => clickurl => WWW url => WWW dispurl => => title => => Elephant facts和Pictures --国家地理儿童将=>儿童的有关大象的特征抽象出来,包括照片、视频、音频、有趣的事实、电子邮件明信片和其他动物的链接)。3 elephant.elehost.com/About_Elephants/about_elephants.htm => stdClass对象( date => clickurl => WWW url => WWW dispurl => => title => About Elephant Information =>!这一页包括大象相关事实的摘要,让你进入大象的世界。)

我试图以可阅读的格式输出结果如下:

代码尝试1:

代码语言:javascript
复制
foreach ($results->{ 'results' } as $item ) 
{

echo "<a href=\"{$item->{ 'url' }}\"><font color ='blue'>{$item->{ 'title' }}</font></a>".": "."$newline"."$newline".$item->{ 'abstract' }."\n\n";


}

我也尝试了以下几点,但没有成功:

代码尝试2:

代码语言:javascript
复制
echo $results['results']['url'];
echo $results['results']['title'];
echo $results['results']['abstract'];

对该怎么办有什么想法吗?

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-01 09:27:14

我注意到您刚刚复制了文档的代码示例的代码,但没关系。

您访问results数组的方式是错误的:

代码语言:javascript
复制
foreach ($results->bossresponse->web->results as $result)
{
    //do stuff
    echo $result->title.'<br/>';
}

或者,正如cptnk所建议的:

代码语言:javascript
复制
$results = json_decode($rsp, true);
//force to assoc-array, which will allow array-access
foreach($results['bossresponse']['web']['results'] as $result)
{
    //$result is array here, but do the same stuff
    echo $result['title'].'<br/>';
}

或者,把两者结合起来

代码语言:javascript
复制
foreach($results->bossresponse->web->results as $result)
{
    $result = (array) $result;//casts stdClass to array
    printf('<a href="%s">%s</a><br/>', $result['url'], $result['title']);
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17400966

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档