我无法按照我的预期迭代以下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
。我也想迭代这些值。
请告诉我们如何解决这个问题。
答案 0 :(得分:2)
解释您拥有的数据。
employees
是一个数组。
employees[0]
又是一个对象。
employees[0].908887
又是一个包含属性firstName
和lastName
的对象。
所以要获得键908887
,98764
等等,你需要循环数组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));