如何在JavaScript中迭代JSON?

时间:2016-12-16 06:55:35

标签: javascript json

我无法按照我的预期迭代以下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 。我也想迭代这些值。

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

5 个答案:

答案 0 :(得分: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]));
  });

});

答案 1 :(得分:1)

你正在迭代一个数组。

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

答案 2 :(得分: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);
        })
    })

});

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

答案 3 :(得分:1)

这应该这样做:

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

答案 4 :(得分:1)

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