【问题标题】:How to iterate over JSON in JavaScript? [duplicate]如何在 JavaScript 中迭代 JSON? [复制]
【发布时间】:2016-12-16 06:55:34
【问题描述】:

我无法按预期迭代以下 JSON。代码如下:

$(document).ready(function() {
    var data = '{"employees":\n\
                [{"908887" : {"firstName":"John", "lastName":"Doe"}},\n\
                 {"98764" : {"firstName":"Anna", "lastName":"Smith"}},\n\
                 { "98762" : {"firstName":"Peter", "lastName":"Jones"}}]}';  

    var empObj = JSON.parse(data);
    for(var key in empObj.employees){
        alert('key - ' + key + '  value - ' + empObj.employees[key]);
    }   
});

在警报中,我正在获取密钥 012,但我想要:9088879876498762。我还想迭代这些值。

请告诉如何解决这个问题。

【问题讨论】:

    标签: javascript json


    【解决方案1】:

    解释你拥有的数据。

    employees 是一个数组。

    employees[0] 又是一个对象。

    employees[0].908887 又是一个具有firstNamelastName 属性的对象。

    所以要获取键90888798764 等。您需要循环employees 的数组,然后在每次迭代中您有一个对象,您需要从中提取key

    var data = '{"employees":[{"908887" : {"firstName":"John", "lastName":"Doe"}},{"98764" : {"firstName":"Anna", "lastName":"Smith"}},{ "98762" : {"firstName":"Peter", "lastName":"Jones"}}]}';
    
    
    var empObj = JSON.parse(data);
    
    empObj.employees.forEach(function(value, index) {
      Object.keys(value).forEach(function(v, i) {
        console.log('key - ' + v + '\nvalue - ' + JSON.stringify(value[v]));
      });
    
    });

    【讨论】:

      【解决方案2】:

      应该这样做:

      var data = '{"employees":\n\
        [{"908887" : {"firstName":"John", "lastName":"Doe"}},\n\
         {"98764" : {"firstName":"Anna", "lastName":"Smith"}},\n\
         { "98762" : {"firstName":"Peter", "lastName":"Jones"}}]}';  
      
      
      var empObj = JSON.parse(data);
      
      empObj.employees.forEach((item) => {
        Object.entries(item).forEach(([key, val]) => {
          console.log(`key-${key}-val-${JSON.stringify(val)}`)
        });
      });
      

      【讨论】:

        【解决方案3】:

        你正在遍历一个数组。

        要获得您所询问的值,您需要遍历 该数组中的每个对象

        【讨论】:

          【解决方案4】:

          您需要迭代数组中的每个对象。 试试这个代码。

          $(document).ready(function(){
          
              var data = '{"employees":\n\
                           [{"908887" : {"firstName":"John", "lastName":"Doe"}},\n\
                            {"98764" : {"firstName":"Anna", "lastName":"Smith"}},\n\
                            { "98762" : {"firstName":"Peter", "lastName":"Jones"}}]}';  
          
          
              var empObj = JSON.parse(data);
          
              $.each(empObj.employees, function(keyEmp, valueEmp){
                  $.each(valueEmp, function(keyIn, valueIn){
                      console.log(keyIn);
                      console.log(valueIn);
                  })
              })
          
          });
          

          执行代码后,只需检查您的开发者控制台。

          【讨论】:

            【解决方案5】:

            var data = '{"employees":\n\
                                             [{"908887" : {"firstName":"John", "lastName":"Doe"}},\n\
                                              {"98764" : {"firstName":"Anna", "lastName":"Smith"}},\n\
                                              { "98762" : {"firstName":"Peter", "lastName":"Jones"}}]}';
            var empObj = JSON.parse(data);
            
            function flatObject(obj) {
                Object.keys(obj).forEach(y => {
                    console.log('key: ' + y)
                    if (obj[y] instanceof Object) {
                        flatObject(obj[y]);
                    } else {
                        console.log('value: ' + obj[y])
                    }
                });
            }
            
            
            empObj.employees.forEach(x => flatObject(x));

            【讨论】:

              猜你喜欢
              • 2013-03-07
              • 2016-10-07
              • 2017-03-29
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2013-02-02
              • 1970-01-01
              相关资源
              最近更新 更多