对于我最新的项目,我需要将YouTube搜索结果作为JSON字符串.我试图从here修改官方Samples的代码,以便整个响应数组作为JSON返回,但JSON输出只包含一个结果,只有两个结果的标记
{“etag”:”\”bvxF-DWHx1toJotsdJBeCm43SLs/Ti9GPWl-tTk2fzo_W4M7px11bPY\””,”eventId”:null,”kind”:”youtube#searchListResponse”,”nextPagetoken”:”CBkQAA”,”prevPagetoken”:null,”visitorId”:null}
这就是我的代码:
<?PHP
header('Cache-Control: no-cache, must-revalidate');
header('Content-type: application/json');
if ($_GET['q'] && $_GET['maxResults']) {
require_once 'Google/Client.PHP';
require_once 'Google/Service/YouTube.PHP';
$DEVELOPER_KEY = 'not gonna reveal my key ;) ';
$client = new Google_Client();
$client->setDeveloperKey($DEVELOPER_KEY);
$youtube = new Google_Service_YouTube($client);
try
{
$searchResponse = $youtube->search->listSearch('id,snippet', array(
'q' => $_GET['q'],
'maxResults' => $_GET['maxResults'],
));
print_r(json_encode($searchResponse));
}
catch (Google_ServiceException $e) {
$htmlBody .= sprintf('<p>A service error occurred: <code>%s</code></p>',
htmlspecialchars($e->getMessage()));
}
catch (Google_Exception $e) {
$htmlBody .= sprintf('<p>An client error occurred: <code>%s</code></p>',
htmlspecialchars($e->getMessage()));
}
}
?>
最后我会喜欢有类似的东西
{
"kind": "youtube#searchListResponse",
"etag": "\"bvxF-DWHx1toJotsdJBeCm43SLs/vL7IQMNuL84nujDqKdOtwOPpBkc\"",
"nextPagetoken": "CAIQAA",
"pageInfo": {
"totalResults": 203164,
"resultsPerPage": 2
},
"items": [
{
"kind": "youtube#searchResult",
"etag": "\"bvxF-DWHx1toJotsdJBeCm43SLs/m4lAJ1Qx-hvZpw4Uc9qSo_rqy5o\"",
"id": {
"kind": "youtube#video",
"videoId": "UyI4v5sxT54"
},
"snippet": {
"publishedAt": "2014-04-14T10:21:21.000Z",
"channelId": "UCpDJl2EmP7Oh90Vylx0dZtA",
"title": "BORGORE & SIKDOPE - Unicorn Zombie Apocalypse (Original Mix)",
"description": "BORGORE teams up with SIKDOPE to bring you the main stage rocker that is Unicorn Zombie Apocalypse. Grab your copy Now : http://btprt.dj/1hFUQhP ...",
"thumbnails": {
"default": {
"url": "https://i.ytimg.com/vi/UyI4v5sxT54/default.jpg"
},
"medium": {
"url": "https://i.ytimg.com/vi/UyI4v5sxT54/mqdefault.jpg"
},
"high": {
"url": "https://i.ytimg.com/vi/UyI4v5sxT54/hqdefault.jpg"
}
},
"channelTitle": "SpinninRec",
"livebroadcastContent": "none"
}
},
{
"kind": "youtube#searchResult",
"etag": "\"bvxF-DWHx1toJotsdJBeCm43SLs/4LQaEODdVEec6exNA21SnYJAeOU\"",
"id": {
"kind": "youtube#video",
"videoId": "CPXv392pc9k"
},
"snippet": {
"publishedAt": "2014-05-16T23:00:00.000Z",
"channelId": "UCpDJl2EmP7Oh90Vylx0dZtA",
"title": "Borgore & Sikdope - Unicorn Zombie Apocalypse (Official Music Video)",
"description": "Borgore & Sikdope present Unicorn Zombie Apocalypse (Official Music Video). Download your copy on Beatport HERE : http://btprt.dj/1hFUQhP English ...",
"thumbnails": {
"default": {
"url": "https://i.ytimg.com/vi/CPXv392pc9k/default.jpg"
},
"medium": {
"url": "https://i.ytimg.com/vi/CPXv392pc9k/mqdefault.jpg"
},
"high": {
"url": "https://i.ytimg.com/vi/CPXv392pc9k/hqdefault.jpg"
}
},
"channelTitle": "SpinninRec",
"livebroadcastContent": "none"
}
}
]
}
解决方法:
问题是您正在尝试对使用PHP客户端库时收到的响应对象进行JSON编码.它不是Youtube API返回的原始JSON对象(以及您要编码的内容).
如果你var_dump($searchResponse);你会看到它说Google_Service_YouTube_SearchListResponse对象
你想通过在模型上调用toSimpleObject来json_encode你得到的“simpleObject”,如:
json_encode($searchResponse->toSimpleObject());
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。