1

このJSONフィードから通常のタイトルと通常の本文を取得する必要があります。私はさまざまな方法を試しましたが、ほとんど成功しませんでした。誰かが解決策を持っていますか?

http://clintonbeattie.tumblr.com/bio/json

ありがとう、C

4

2 に答える 2

4

それはJSONではありません。それはJSONPの奇妙な見方です。

に設定された<script />タグを追加すると、グローバル変数は応答情報を持つオブジェクトを指します。srchttp://clintonbeattie.tumblr.com/bio/jsontumblr_api_read

var tumblr_api_read = {
    "tumblelog": {
        "title": "First Title",
        "description": "",
        "name": "clintonbeattie",
        "timezone": "US\/Eastern",
        "cname": false,
        "feeds": []
    },
    "posts": [{
        "id": null,
        "url": "",
        "url-with-slug": "",
        "type": "regular",
        "date-gmt": " GMT",
        "date": "Wed, 31 Dec 1969 19:00:00",
        "bookmarklet": null,
        "mobile": null,
        "feed-item": "",
        "from-feed-id": 0,
        "unix-timestamp": 1333622193,
        "format": "html",
        "reblog-key": "TmN3ujDJ",
        "slug": "",
        "regular-title": "",
        "regular-body": ""
    }]
};

したがって、このようなことをしてください。

<script src="http://clintonbeattie.tumblr.com/bio/json"></script>
<script>
    // Use tumblr_api_read.

    alert(tumblr_api_read.tumblelog.title); // Shows "First Title"

    for (var i=0;i<tumblr_api_read.posts.length;i++) {
        var thisPost = tumblr_api_read.posts[i];

        alert("This post was created at " + thisPost.date);
    }
</script>
于 2012-04-05T14:38:48.930 に答える
2

APIドキュメントから:

JSON出力

ReadAPIを呼び出すときに/api/readの代わりに/api/ read / jsonを使用すると、出力はtumblr_api_readという名前のJavascript変数に割り当てられたJSONとして送信されます。

それJSONではなく、JSONPでもありません。彼らはリテラルJavaScriptを返しています。したがって、それらのドキュメントに従い、次のことを行う必要があります。

<script type="text/javascript" src="http://clintonbeattie.tumblr.com/api/read/json"></script>

これにより、オブジェクトリテラルであるtumblr_api_read(つまり)という名前のグローバル変数が作成されます。window.tumblr_api_read

jQueryを使用しているため、次のことができます。

$.getScript("http://clintonbeattie.tumblr.com/api/read/json", function(script, textStatus, jqXHR) {
  console.log(window.tumblr_api_read.tumblelog.title);
});

これらの人がドキュメントでjson.orgにリンクできるのは驚くべきことですが、これをひどく台無しにしてしまいます。

于 2012-04-05T14:51:20.587 に答える