2013-08-07 83 views
1

我试图通过他们的API从Google图书书架中获取一串ISBN。 Here's我的尝试不起作用。 (我尝试使用this snippet从JSON获取某些属性值的字符串

$.getJSON("https://www.googleapis.com/books/v1/users/115939388709512616120/bookshelves/1004/volumes?key=MYAPIKEY", function (data) { 
console.log(data); 

var allIsbns = []; 

for (i = 0; i < data.items.volumeInfo.industryIdentifiers[0].identifier.length; i++) { 
allIsbns.push(data.items.volumeInfo.industryIdentifiers[0].identifier[i]); 
} 

alert(allIsbns); 
}); 

fiddle

回答

1

望着对象登录,data.items是一个数组(长度data.totalItems的似乎)。此外,industryIdentifiers[0].identifier似乎是一个字符串,而不是的数组。因此,我认为你想通过data.items来代替。

另外值得注意的是,除非规范声明了预定义的顺序,否则你可能不应该通过industryIdentifiers上的显式索引。我会建议寻找具有type === "ISBN_10"标识符:

for (var i = 0; i < data.items.length; i++) { 
    for (var j = 0; j < data.items[i].volumeInfo.industryIdentifiers.length; j++) { 
     if (data.items[i].volumeInfo.industryIdentifiers[j].type === "ISBN_10")   
      allIsbns.push(data.items[i].volumeInfo.industryIdentifiers[j].identifier); 
    } 
} 
+0

我怎么会找类型===“ISBN_10”? – nathanbweb

+0

天真的方式是通过'industryIdentifiers'循环,直到找到一个匹配的 –

+0

好的我有我的小提琴工作在http://jsfiddle.net/nathanbweb/AbuCS/2。如果我可以得到一个示例或代码段,我仍然对如何在循环中查找类型感兴趣.. – nathanbweb