JSON嵌套子元素引用

时间:2019-01-29 19:08:00

标签: javascript object

考虑到我不知道子元素有多深,如何使用javascript访问JSON格式的嵌套子对象?

我尝试过:

var body = json..simplyChild; 

但不适用于我

var json = {
    "root": {
        "firstChild": {
            "secondChild": {
                "simplyChild": "kek"
            }
        }
    }
}

2 个答案:

答案 0 :(得分:1)

理想情况下,您只会正常获取该元素。但这应该可以做您想要的。

var json = 
{
    "root": {
        "firstChild": {
            "secondChild": {
                "simplyChild": "kek"
            }
        }
    }
}

function getNestedElement(obj, k){
    let keys = Object.keys(obj);
    for(let i = 0; i < keys.length; i++){
        let key = keys[i];
        if(key == k){
            return obj[key];
        }else{
            return getNestedElement(obj[key], k);
        }
    }
}

答案 1 :(得分:0)

使用一个递归函数根据该值是否是对象来调用自身。

这是两个用法示例:

var json = {
  "root": {
    "firstChild": {
      "secondChild": {
        "simplyChild": "kek"
      },
      "little": "I am little"
    }
  }
}

function Find(key, obj) {
  for (let k in obj) {
    if (k == key) return obj[k]
    if (typeof obj[k] == 'object') { 
      let r = Find(key, obj[k]) 
      if (r) return r
    }
  }
}

console.log(Find('simplyChild', json))
console.log(Find('secondChild', json))
console.log(Find('little', json))
console.log(Find('unSetKey', json))