使用JavaScript中的for...in循环遍历JSON对象中的属性和子对象,以获取对应的值
var data = {
"1": {
"1": 1,
"2": 1
},
"2": {
"2": 1
},
"3": {
"1": 1,
"2": 1
},
"4": {
"2": 1,
"3": 1
},
"5": {
"2": 2,
"3": 1
}
};
for (var key1 in data) {
if (data.hasOwnProperty(key1)) {
var obj1 = data[key1];
console.log('key1: ' + key1);
for (var key2 in obj1) {
if (obj1.hasOwnProperty(key2)) {
var value = obj1[key2];
console.log('key2: ' + key2 + ', value: ' + value);
}
}
}
}
在这个示例中,我们定义了一个名为data的JSON对象,其中包含五个属性,每个属性都是一个由键值对组成的子对象。然后,我们使用for...in循环遍历该对象中的属性和子对象。我们首先获取每个属性的键,并检查是否是该对象的直接属性(而不是继承来的属性)。如果是直接属性,则获取其对应的值,这个值是一个由键值对组成的子对象。然后,我们使用另一个for...in循环遍历每个子对象中的键和值,分别打印它们的名称和值。
还有一个方法就是采用JSON.parse()
方法将字符串转换为JavaScript对象
const dataString = `{
"1": {
"1": 1,
"2": 1
},
"2": {
"2": 1
},
"3": {
"1": 1,
"2": 1
},
"4": {
"2": 1,
"3": 1
},
"5": {
"2": 2,
"3": 1
}
}`;
const dataObj = JSON.parse(dataString);
// 遍历数据对象
for (const key in dataObj) {
if (dataObj.hasOwnProperty(key)) {
console.log(`key: ${key}`);
const innerObj = dataObj[key];
// 遍历内部对象
for (const innerKey in innerObj) {
if (innerObj.hasOwnProperty(innerKey)) {
const innerValue = innerObj[innerKey];
console.log(`innerKey: ${innerKey}, innerValue: ${innerValue}`);
}
}
}
}