2017-08-17 11 views
0

私はwiki APIを使いこなし、特定の記事からリンクの配列を返そうとしています。あなたは私が私が私が必要とするリンクの配列にアクセスするためPAGEIDを知っている必要が見ることができるように特定のwiki記事からリンクの配列を取得

{ 
    "continue": { 
    "plcontinue": "22989|0|2007_Rugby_World_Cup", 
    "continue": "||" 
    }, 
    "query": { 
    "normalized": [ 
     { 
     "from": "paris", 
     "to": "Paris" 
     } 
    ], 
    "pages": { 
     "22989": { 
     "pageid": 22989, 
     "ns": 0, 
     "title": "Paris", 
     "links": [ 
      { 
      "ns": 0, 
      "title": ", Île-de-France, Seine, Kingdom of France" 
      }, 

:これは私が働いているJSONの一種です。私はplcontinueの値から抽出し、それを私のコードの後ろに挿入しようとしましたが、未定義を返します。

これは私のAPIリクエストです:私は、要求を行う前にPAGEIDを知らないときに私は、リンクの配列にアクセスするにはどうすればよい

$.ajax({ 
     url: "https://en.wikipedia.org/w/api.php?action=query&titles=" + searchTerm + "&pllimit=50&prop=links&format=json", 
     method: "GET", 
     dataType: "jsonp" //allow CORS 
    }).then(function (data) { 
     var plcontinueArray = data.continue.plcontinue.split("|") 
     var pageId = plcontinueArray[0]; 
     var links = data.query.pages.pageId.links; 

+0

は 'data.pages'配列のオブジェクトに対して反復処理を行いますか? –

+0

ページを繰り返して、それぞれを取得してください。 'for(pageid in data.query.pages)...'を呼び出し、 'data.query.pages [pageid] .links'を取得します。 – GolezTrol

+0

私は 'data.query.pages [pageId] .links'でアクセスすることを提案します。 – gus27

答えて

2

ドット表記を使用してオブジェクト内のデータにアクセスするのと同じ方法で、メソッドのようなインデックスを使用してオブジェクトのキーにアクセスすることもできます。例えば

var obj = { foo: "bar", spam: "eggs" }; 
var value1 = obj.foo; // value1 = "bar" 
var keyName = "spam"; 
var value2 = obj[keyName]; // value12 = "eggs" 

だからあなたの例のために、あなたはこのような何かをするだろう -

... 
var pageId = plcontinueArray[0]; 
var links = data.query.pages[pageId].links; 
0

あなたは間違ってPAGEIDにアクセスしている -

変更するには、この行を - var links = data.query.pages.pageId.links;var links = data.query.pages[pageId].links;

0

pagesオブジェクトをループしてfor ... inループにすることができます。 このようなもの:

... 

then(function (data) { 
    for(var pageId in data.query.pages) { 
     if (data.query.pages.hasOwnProperty(pageId)) { 
      console.log(data.query.pages[pageId].links); 
     } 
    } 
}); 

希望すると助かります。

関連する問題