通过JSON迭代检索单个变量

时间:2018-04-12 12:25:02

标签: javascript json foreach

我有一个JSON本地文件,如下所示:

{
    "sites" : [
        {
            "name" : "Somename",
            "url" : "https://url.com",
            "api" : "http://url.com/api",
        },
        {
            "name" : "Somename2",
            "url" : "https://url2.com",
            "api" : "http://url2.com/api",
        }

}

每个api都有一个我需要存储在数据库中的整数数据。如何在Javascript中迭代这样的JSON?很快,因为我能够检索该api url,我将能够编写另一个函数并获得我想要的整数。我尝试过的是:

function getNetworkData(){
    $.getJSON('../json/sites/site-list.json', function(data) {

    var sites = JSON.parse(data);

    sites.forEach(function(data){
        console.log(data.sites[0].name)
});

});
}

......但这不起作用。我一直收到错误:

  

位置1的JSON中出现意外的令牌o

4 个答案:

答案 0 :(得分:2)

函数$.getJSON已经解析了来自服务器/源的响应。

因此,您不需要使用JSON.parse解析它,而且,您尝试使用数组循环,如下所示:

sites.forEach

您真正想要的是循环属性sites

data.sites.forEach(function(s){
    console.log(s.name);
});

答案 1 :(得分:1)

像这样:

function getNetworkData(){
  $.getJSON('../json/sites/site-list.json', function(data) {

    data.sites.forEach(function(site){
        console.log(site.name)
    });

  });
}

您循环的对象不需要索引。

site已经等于第一个循环上的sites [0],第二个循环上的sites [1]等等,所以你只需要site.name

答案 2 :(得分:1)

你已经有了JSON,没有必要解析。请参阅jQuery.getJSON

更新
var sites = JSON.parse(data);

    sites.forEach(function(data){
        console.log(data.sites[0].name)
});

data.sites.forEach(function(site){
    console.log(site.name); // prints name
    console.log(site.api); // prints api
});

答案 3 :(得分:0)

略过JSON.parse(data);您将获得一个可以操作$.getJSON()的对象。见getJson