我正在尝试通过api遍历在json中返回的所有对象。下面是我的代码:
$(document).ready(function() {
$('.form-container').submit(function() {
var $body = $('body');
var $greeting = $('#greeting');
// load streetview
var streetname = $("#street").val();
var cityname = $("#city").val();
var address = streetname + ', ' + cityname;
var bigImgUrl = "https://maps.googleapis.com/maps/api/streetview?size=600x400&location="+ address +'';
$greeting.text("So you want to live at " + address + "?");
$body.append('<img class="bgimg" src='+bigImgUrl+'>');
// NYTimes AJAX request
var nytUrl = "http://api.nytimes.com/svc/search/v2/articlesearch.json?q="+cityname+"&sort=newest&api-key=####";
$.getJSON(nytUrl, function(data) {
createStructure(data); // Call to recursive function
});
return false;
});
var createStructure = function (data)
{
$.each(data, function(key, value) {
if (typeof value === 'object')
{
alert(key + ": " + value);
createStructure(data[key]);
}
else
{
alert(key + ": " + value);
}
});
};
return false;
});但是,它不会遍历所有这些元素。下面的截图描述了API返回的json的一部分:

代码显示了只输入response、所有meta(包括子元素)、输入docs和0对象(只有一些子元素)的警报。它跳过docs和其他外部对象的所有剩余子对象。
下面是指向json:JSON的链接
发布于 2015-04-08 22:03:26
使用for in循环而不是$.each
var createStructure = function (data) {
for (var key in data){
var value = data[key];
if (typeof value === 'object') {
console.log(key + ": " + value);
createStructure(value);
} else {
console.log(key + ": " + value);
}
}
};https://stackoverflow.com/questions/29516114
复制相似问题