代码之家  ›  专栏  ›  技术社区  ›  Maciaz

遍历JSON以检索单个变量

  •  0
  • Maciaz  · 技术社区  · 6 年前

    我有一个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)
    });
    
    });
    }
    

    。。。但这根本不起作用。我不断收到一个错误:

    JSON中位置1处的意外标记o

    4 回复  |  直到 6 年前
        1
  •  2
  •   Ele    6 年前

    功能 $.getJSON 已分析来自服务器/源的响应。

    因此,您不需要使用 JSON.parse ,然后,您将尝试使用数组进行循环,如下所示:

    sites.forEach
    

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

    data.sites.forEach(function(s){
        console.log(s.name);
    });
    
        2
  •  1
  •   Nikhil Aggarwal    6 年前

    您已经获得了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
  •  1
  •   Djave    6 年前

    像这样:

    function getNetworkData(){
      $.getJSON('../json/sites/site-list.json', function(data) {
    
        data.sites.forEach(function(site){
            console.log(site.name)
        });
    
      });
    }
    

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

    site 已经等于第一个循环中的站点[0],第二个循环中的站点[1],等等,所以您只需要站点。名称

        4
  •  0
  •   Tnc Andrei    6 年前

    跳过 JSON.parse(data) ;您将使用 $.getJSON() 你可以操纵的。看见 getJson