我找到了很多解决方案来查找嵌套json文件中的节点深度。但它会给我一个错误"超过最大递归深度" 当它设置了最大递归限制时,它表示"进程超出了一些错误代码" 作为我的问题的一部分,我还需要找出json文件中每个节点的关键名称。
示例json:
self.ref = FIRDatabase.database().reference()

输出应为:
节点: [data [media [image [height,width,src]],target [id,url],title,type,url]]
深度:4
答案 0 :(得分:1)
function geth(obj) {
var depth = 0;
var k = Object.keys(obj);
console.log(k);
for (var i in k) {
var tmpDepth = geth(obj[k[i]]);
if (tmpDepth > depth) {
depth = tmpDepth
}
}
return 1 + depth;
}
答案 1 :(得分:1)
如果其他人来到这里,发现接受的答案不起作用,因为字符串的Object.keys()返回字符串每个字符的数组,因此对于大对象或具有大字符串的对象,它都会失败。 这是可行的->
function getDepth(obj){
if(!obj || obj.length===0 || typeof(obj)!=="object") return 0;
const keys = Object.keys(obj);
let depth = 0;
keys.forEach(key=>{
let tmpDepth = getDepth(obj[key]);
if(tmpDepth>depth){
depth = tmpDepth;
}
})
return depth+1;
}