最近,with help from the Stack Oveflow community,我学习了如何处理从Google API获得的JSON数据。所以,我认为我已经掌握了如何使用来自Blogger的JSON数据进行大致相同的操作,再次使用Google API。
然而,这让我发疯了。我似乎无法掌握如何获得我需要的阵列的正确级别。
我想要做的是获取一些博客文章,然后樱桃挑选信息并显示它。应该是直截了当的。
现在我的博客只有三个测试条目。我想看看我是否可以遍历我从JSON创建的数组来显示数据。如果我使用此代码:
$recentBlog = json_decode(file_get_contents("https://www.googleapis.com/blogger/v3/blogs/xxxxxxxxxxxxxxxxxxxx/posts?key=xxxxxxxxxxxxxxxxxxxxxxxxxxxxx", true));
foreach ($recentBlog as $item)
{
var_dump($item[0]);
}
...然后我从数组中获取第一项 的数据。这对我来说很有意义。我在数组中循环,但在每次通话时,我只询问0
位置的第一项。
所以我想我会这样做:
$recentBlog = json_decode(file_get_contents("https://www.googleapis.com/blogger/v3/blogs/xxxxxxxxxxxxxxxxxxxx/posts?key=xxxxxxxxxxxxxxxxxxxxxxxxxxxxx", true));
$count = 0;
foreach ($recentBlog as $item)
{
var_dump($item[$count]);
$count = $count + 1;
}
...但我只得到第二和第三项。我不再拿第一个项目。
我的代码出了什么问题?
如果有帮助,这是Google's documentation关于我回来的JSON的格式。
答案 0 :(得分:2)
您的JSON解码调用中可能有一个错误的括号:
$recentBlog = json_decode(file_get_contents("https://[...]"), true);
请注意,我在file_get_contents()
函数后面直接移动了一个括号。这样json_decode()
将返回一个可迭代的数组。
答案 1 :(得分:0)
你得到如下的回复。如果要循环博客条目,则必须在foreach中循环$recentBlog['items']
。
foreach ($recentBlog['items'] as $item)
{
var_dump($item);
}
<强>响应:强>
{
"kind": "blogger#postList",
"nextPageToken": "CgkIChiAkceVjiYQ0b2SAQ",
"prevPageToken": "CgkIChDBwrK3mCYQ0b2SAQ",
"items": [
{
"kind": "blogger#post",
"id": "7706273476706534553",
"blog": {
"id": "2399953"
},
"published": "2011-08-01T19:58:00.000Z",
"updated": "2011-08-01T19:58:51.947Z",
"url": "http://buzz.blogger.com/2011/08/latest-updates-august-1st.html",
"selfLink": "https://www.googleapis.com/blogger/v3/blogs/2399953/posts/7706273476706534553",
"title": "Latest updates, August 1st",
"content": "elided for readability",
"author": {
"id": "401465483996",
"displayName": "Brett Wiltshire",
"url": "http://www.blogger.com/profile/01430672582309320414",
"image": {
"url": "http://4.bp.blogspot.com/_YA50adQ-7vQ/S1gfR_6ufpI/AAAAAAAAAAk/1ErJGgRWZDg/S45/brett.png"
}
},
"replies": {
"totalItems": "0",
"selfLink": "https://www.googleapis.com/blogger/v3/blogs/2399953/posts/7706273476706534553/comments"
}
},
{
"kind": "blogger#post",
"id": "6069922188027612413",
elided for readability
}
]
}