js中使用递归,取出后台返回的深层嵌套json中的动态key和value
时间: 2024-09-09 20:09:08 浏览: 52
在JavaScript中,使用递归方法来处理嵌套的JSON数据是一种常见的做法。这种方法允许我们深入JSON对象的每一层,以访问和处理那些具有动态键名的深层数据。以下是一个示例代码,展示了如何使用递归函数来遍历嵌套JSON并获取动态键值:
```javascript
function extractKeyValuePairs(obj) {
const result = {};
for (const [key, value] of Object.entries(obj)) {
if (typeof value === 'object' && value !== null) {
// 如果值是对象,递归调用
const nestedResult = extractKeyValuePairs(value);
// 将子对象的键值对添加到结果中,键名使用当前key作为前缀
for (const [nestedKey, nestedValue] of Object.entries(nestedResult)) {
result[`${key}.${nestedKey}`] = nestedValue;
}
} else {
// 如果值不是对象,直接记录键值对
result[key] = value;
}
}
return result;
}
// 示例使用
const nestedJson = {
a: 1,
b: {
c: 2,
d: {
e: 3
}
}
};
const extractedKeyValuePairs = extractKeyValuePairs(nestedJson);
console.log(extractedKeyValuePairs); // 输出: { "a": 1, "b.c": 2, "b.d.e": 3 }
```
这段代码定义了一个`extractKeyValuePairs`函数,它接受一个JSON对象作为参数。函数内部,我们创建了一个新的空对象`result`来存储最终的键值对。接着,我们遍历传入的JSON对象的每个键值对。如果当前的值是对象类型(并且不为`null`),则递归调用`extractKeyValuePairs`函数,并将返回的结果作为子键值对添加到结果对象中。如果当前的值不是对象,则直接将其键值对添加到结果对象中。最终,函数返回包含所有深层键值对的结果对象。
阅读全文