免责声明:我不懂编程。
我正尽力尽力赶上。
在阅读(以及后来尝试)this question的答案时,我在想一个可能很好的&有用的更新是在json术语中使用相同类型的信息,即如何通过json检索Blogger博客的“主页”URL。
我试图自己解决这个问题,因为我知道,例如......
<script type="text/javascript">
function specialpost(json) {
document.write('<div>');
// VARIABLE DECLARATION
var i;
var j;
// LOOP
for (i = 0; i < json.feed.entry.length; i++)
{
for (j = 0; j < json.feed.entry[i].link.length; j++) {
if (json.feed.entry[i].link[j].rel == 'alternate') {
break;
}
}
var postUrl = "'" + json.feed.entry[i].link[j].href + "'";
var postTitle = json.feed.entry[i].title.$t;
var postContent = json.feed.entry[i].content.$t;
var item = '<h3><a href="' + postUrl + '" target="_blank">' + postTitle + '</a></h3><p>' + postContent + '</p>';
document.write(item);
}
document.write('</div>');
}
</script>
<script src="https://MYBLOG.blogspot.com/feeds/posts/default/-/special?max-results=NUMBER_OF_POSTS_DISPLAYED&alt=json-in-script&callback=specialpost"></script>
...会给我一个div
,其中包含标题(包括链接)和标有“特殊”的所需帖子数量的内容,但在我尝试的中途我感到有些困惑。
我正在使用jsonviewer以易于理解的树状形式查看我的博客的json代码,我猜测如果每个帖子的URL存储在[] entry
内的某个位置,那么URL博客本身可能存储在[] link
内的某个地方。
问题:我是对的吗?
[] link
包含4个条目:{}0
{}1
{}2
和{}3
反过来,每一个都包含3个条目:
rel
分别设为"http://schemas.google.com/g/2005#feed"
"self"
"alternate"
和"hub"
type
前两个设置为"application/atom+xml"
而第三个设置为text/html
- 未定义为{}3
href
设为
"http://MYBLOG.blogspot.com/feeds/posts/default"
(后跟 ?alt=json
为我们提供了相同json代码的URL
我进入了 jsonviewer 以获得树状视图)
"https://www.blogger.com/feed/1234567890123456789/posts/default?alt=json"
(这个19位数字,我想,是一些机器生成的数字名称
谷歌分配给我的博客)
"http://MYBLOG.blogspot.com"
和
分别为"http://pubsubhubbub.appspot.com"
。
我猜我所追求的是{}2
问题:我又回来了吗?如果是,我如何声明var myblogUrl
的值设置为href
条目中存储的{}2
?
最后,但并非最不重要:其他三个条目是什么?条目href
中存储的{}0
类似于将您带到某种订阅页面的页面,您可以选择以何种方式订阅相关博客。这是真的吗?
答案 0 :(得分:0)
根据link
元素的ATOM规范(参考http://atomenabled.org/developers/syndication/#recommendedEntryElements)
link - 标识相关网页。关系的类型是定义的 通过rel属性。每个类型的条目限制为一个备用 和hreflang。如果没有,则条目必须包含备用链接 内容元素。更多信息here。
因此,link
条目中的URL将根据发出的请求不断变化。您必须使用JavaScript split
函数来获取主页的值 -
var myblogUrl = json.feed.link[0].href.split('feeds')[0];
注意:如果您使用类型为myblog.blogspot.com
的网址请求Feed,则此功能将有效。但是,如果您从blogger.com
请求Feed(例如 - https://www.blogger.com/feeds/596098824972435195/posts/default/-/android?alt=json),则必须对此进行更改。
答案 1 :(得分:0)
var url = json.feed.link.find(function($) {
return $.rel === "alternate";
}).href.split('/search/')[0];