2011-01-30 42 views
0

這是一個json,我有,是有效的,但由於某種原因,如果我訪問這個query.pages.length是「未定義」...我怎麼知道pages的兒童的數字呢?他們是小孩嗎?在這個例子中訪問JSON數據的問題

{ 
     "query-continue":{ 
      "allpages":{ 
      "gapfrom":"Tron (film)" 
      } 
     }, 
     "query":{ 
      "pages":{ 
      "174059":{ 
       "pageid":174059, 
       "ns":0, 
       "title":"Tron" 
      }, 
      "29799461":{ 
       "pageid":29799461, 
       "ns":0, 
       "title":"Tron: Betrayal" 
      }, 
      "2424602":{ 
       "pageid":2424602, 
       "ns":0, 
       "title":"Tron: Deadly Discs" 
      }, 
      "25415189":{ 
       "pageid":25415189, 
       "ns":0, 
       "title":"Tron: Evolution" 
      }, 
      "29958517":{ 
       "pageid":29958517, 
       "ns":0, 
       "title":"Tron: Evolution - Battle Grids" 
      }, 
      "22547607":{ 
       "pageid":22547607, 
       "ns":0, 
       "title":"Tron: Legacy" 
      }, 
      "29541046":{ 
       "pageid":29541046, 
       "ns":0, 
       "title":"Tron: Legacy (soundtrack)" 
      }, 
      "11825742":{ 
       "pageid":11825742, 
       "ns":0, 
       "title":"Tron: Solar Sailer" 
      }, 
      "8005401":{ 
       "pageid":8005401, 
       "ns":0, 
       "title":"Tron: The Ghost in the Machine" 
      }, 
      "29487895":{ 
       "pageid":29487895, 
       "ns":0, 
       "title":"Tron: Uprising" 
      } 
      } 
     } 
    } 

回答

0

我寫了這個代碼進行計數的pages長度:

count = 0; 
for (var key in netData.query.pages) { 
count = count + 1; 
} 
alert(count); 
+0

它產生`10`。 `netData`是你的JSON對象。 – 2011-01-30 06:45:53

0

query.pages是一個對象,而不是陣列。如果你是在生成JSON的控制,你可以把它對象的數組來代替:

"query":{ 
    "pages":[ 
    { 
     "pageid":174059, 
     "ns":0, 
     "title":"Tron" 
    }, 
    { 
     "pageid":29799461, 
     "ns":0, 
     "title":"Tron: Betrayal" 
    }, 
    { 
     "pageid":2424602, 
     "ns":0, 
     "title":"Tron: Deadly Discs" 
    } 
    ] 
} 

那麼你可以使用query.pages.length。使用數組很好,因爲關鍵只是pageid。

0

我不得不處理這個......你需要通過頁面的每個頁面迭代,並檢查hasOwnProperty,或者如果所有被編號...


var count = 0; 
for (var key in query.pages) { 
    //local page variable 
    var page = query.pages[key]; 

    //page isn't what you're looking for 
    if (!page || page.pageid != key) continue; 

    //increase count 
    count++; 

    //do something with page 
}

我已經看到了這個之前有種馬虎,而且工程師應該被槍殺。

+0

這是一個維基百科API json ...哭泣.... btw謝謝! – Francesco 2011-01-30 16:09:05