2016-12-16 209 views
-1

我无法迭代下面的JSON,因为我期待。该代码给出如下:如何在JavaScript中迭代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]); 
       } 

      }); 

在警戒,我得到的密钥为 '0', '1', '2',但我想这些数字 '908887', '98764',“98762 '作为一个关键。以及我想要迭代的价值也。

请建议我在哪里出错或JSON格式错误以及如何迭代此JSON。

回答

0

这应做到:

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)}`) 
    }); 
}); 
1

您正在遍历数组。

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

1

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

$(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); 
     }) 
    }) 

}); 

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

2

解释你的数据。

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])); 
 
    }); 
 

 
});

0

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));