【问题标题】:Iterate through JSON to retrieve single variable遍历 JSON 以检索单个变量
【发布时间】:2018-04-12 12:25:01
【问题描述】:

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

【问题讨论】:

  • 在解析之前检查您在sites 中的结果。你得到什么?
  • 您的本地 JSON 文件有语法错误。检查jsonlint.com
  • 这里不需要JSON.parse,因为 $.getJson 已经为你做这件事了。除此之外,正如@Tomalak 上面所说,那个 json 特别是错误的(额外的逗号)。但是,由于您提到 json 与您发布的那个“看起来很像”,所以可能不是 json 本身有问题,而只是额外的解析。

标签: javascript json foreach


【解决方案1】:

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

因此,您无需使用JSON.parse 对其进行解析,此外,您正在尝试使用以下数组进行循环:

sites.forEach

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

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

【讨论】:

    【解决方案2】:

    你已经得到了 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】:

      像这样:

      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

      【讨论】:

      • 现在好了(:
      【解决方案4】:

      跳过JSON.parse(data);您将获得一个带有$.getJSON() 的对象,您可以对其进行操作。见getJson

      【讨论】:

        猜你喜欢
        • 2018-04-19
        • 1970-01-01
        • 1970-01-01
        • 2019-03-15
        • 2022-12-12
        • 1970-01-01
        • 2019-04-28
        • 2023-01-27
        • 1970-01-01
        相关资源
        最近更新 更多