通过json

时间:2017-01-28 10:47:42

标签: javascript json blogger

免责声明:我不懂编程。
我正尽力尽力赶上。

在阅读(以及后来尝试)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

    < / LI>
  • 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类似于将您带到某种订阅页面的页面,您可以选择以何种方式订阅相关博客。这是真的吗?

2 个答案:

答案 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];