使用javascript在json数据中搜索密钥

使用javascript在json数据中搜索密钥,javascript,Javascript,当我不确定key2的位置时,如何获取key2的孩子 data:{ key1:{ child1:{}, child2:{} } key2:{ child21:{} } } 这将返回键名的字符串数组[“键1”、“键2”] 我认为你特别需要: var keys = Object.keys(data); 您可以通过以下方式将其转换为其子对象的数组: var childnames = Object.keys(data[key2]); var-key2children=[]; 对于

当我不确定key2的位置时,如何获取key2的孩子

data:{
key1:{
   child1:{},
   child2:{}
 }
key2:{
  child21:{}
 }
}
这将返回键名的字符串数组<代码>[“键1”、“键2”]

我认为你特别需要:

var keys = Object.keys(data);
您可以通过以下方式将其转换为其子对象的数组:

var childnames = Object.keys(data[key2]);
var-key2children=[];
对于(var i=0;i
编辑也许这有帮助

var key2children = [];
for(var i=0; i< childnames.length; i++){
  key2children.push(data[key2][cildnames[i]);
}
//获取对象的子对象
函数getChildObjects(tgtobj){
var objchildren=[];
objectkeys=Object.keys(tgtobj);
对于(var i=0;i
必须使用for-in循环和递归来获取嵌套键

//To get the children of an object
function getChildObjects(tgtobj){
    var objchildren = [];
    objectkeys = Object.keys(tgtobj);
    for(var i=0; i< objectkeys.length; i++){
      key2children.push(tgtobj[objectkeys[i]);
    }
    return objectchildren;
}

//This could be used to get the children of a child object in a function like this:
function getChildOjectsOfChildByName(tgtobj, name){
    return getChildObjects(tgtobj[name]);
}

//usage example:
var key2childojects = getChildOjectsOfChildByName(data, "key2");

这是一个对象,只需使用键。
data.key2.child21
…或
data[“key2”][“child21”]
如果在设计时不知道键,可以使用变量。位置是什么意思?请提供一些示例数据的文本结果。要输出“child21”或“{}”,还是别的?按照@ProfessorAllman的观点,对象中没有“位置”。只有键。顺序是不确定的,不应该被认为是固定的。(参见)如果此搜索是针对child21的属性,该怎么办?相同的代码将不起作用。您可以构建一个函数,将数据中对象的名称作为参数…我将创建一个。Posted。这是否适合您的需要?如果child21是数组呢?child21可以有任何有效值。child21是数据对象的键/属性。它是JSON字符串。它不能是数组。根据我对这个问题的理解,您试图找到对象的特定键/属性。如果您试图确定它是否是数组,那么您也可以将其添加到数组中。
function searchObj(obj, searVal){
    for (ii in obj){
        if(ii === searVal){
            console.log(ii, ' -- my key');
        } else{
            console.log(ii, ' -- no key here');
            searchObj(obj[ii], searVal);
        }
    }
}
searchObj(data, 'child21');