0

このクエリからウィキペディアAPIへ:

http://en.wikipedia.org/w/api.php?action=query&prop=links&format=json&plnamespace=0& pllimit=10&titles=List%20of%20television%20programs%20by%20name

JSON構造を取得します。例:

var data = {
  "query": {
    "pages": {
      "1536715": {
        "pageid": 1536715,
        "ns": 0,
        "title": "List of television programs by name",
        "links": [
          {
            "ns": 0,
            "title": "$1.98 Beauty Show"
          },
          {
            "ns": 0,
            "title": "''Dance Academy''"
          }
        ]
      }
    }
  },
  "query-continue": {
    "links": {
      "plcontinue": "1536715|0|15\/Love"
    }
  }
}

"links"配列の要素を操作したいと思います。ただし、要素の存在に基づいて"pageid": 1536715、ネストされたオブジェクトの名前は"1536715"変更される可能性のある動的な値であると思われます。この名前を使用して「links」配列にアクセスするのは気が進まないquery.pages.1536715.links

このオブジェクトを「ステップ」する方法はありますか?つまり、ワイルドカードを使用しquery.pages.*.linksますか?pagesそれができない場合、このオブジェクトを取得するためにの子を反復処理できますか?私はこのプロジェクトにjQuery1.7.2を使用しています。そこから役立つ方法を提案できる場合に備えて、

4

2 に答える 2

1

これでそこにたどり着くはずです...

var links, i, pageID;

for (pageID in query.pages) {
    links = query.pages[pageID].links;
    for (i=0; i<links.length; i++) {
        link = links[i];
        link.ns; link.title // handle link obj here.
    }
}
于 2012-05-21T00:12:22.993 に答える
1

はい、ループする必要があります。非常によく似た質問parse json string from wikimedia using jqueryも参照してください。indexpageidsパラメータを使用して、結果ページ ID のリストを受け取ることもできます。

if (data && data.query && data.query.pages)
    var pages = data.query.pages;
else
    // error: No pages returned / other problems!
for (var id in pages) { // in your case a loop over one property
    var links = pages[id].links
    if (links)
        for (i=0; i<links.length; i++) {
            // do what you want with links[i]
        }
    else
        // error: No links array returned for whatever reasons!
}
于 2012-05-21T00:15:52.027 に答える