Javascript 在此示例中访问JSON数据时出现问题
这是我拥有的json,是有效的,但出于某种原因,如果我访问这个Javascript 在此示例中访问JSON数据时出现问题,javascript,json,Javascript,Json,这是我拥有的json,是有效的,但出于某种原因,如果我访问这个query.pages.length是“未定义的”。。。那么我怎么知道页面的子页面的numebr呢?他们是孩子吗 { "query-continue":{ "allpages":{ "gapfrom":"Tron (film)" } }, "query":{ "pages":{
query.pages.length
是“未定义的”。。。那么我怎么知道页面的子页面的numebr呢?他们是孩子吗
{
"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"
}
}
}
}
我写这段代码是为了计算页面的长度
:
count = 0;
for (var key in netData.query.pages) {
count = count + 1;
}
alert(count);
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。我不得不处理这个问题。。。您需要遍历页面中的每个页面,并检查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
}
我以前见过这种草率的json,工程师应该被枪毙。它产生10
netData
是您的JSON对象。