Javascript 如何迭代NodeJSON中的嵌套属性?

Javascript 如何迭代NodeJSON中的嵌套属性?,javascript,json,node.js,loops,iteration,Javascript,Json,Node.js,Loops,Iteration,我有一个三层嵌套的json对象,我必须动态地迭代它 这是我的密码 var responseObj ={ db_config:{ db_user: 'das1234', }, env_con:{ db_con:'ds67' }, db_password: 'ds345ty76', db_host: 'wdsa12

我有一个三层嵌套的json对象,我必须动态地迭代它

这是我的密码

var responseObj ={ 
           db_config:{
             db_user: 'das1234',
            },
           env_con:{
             db_con:'ds67'
           },
           db_password: 'ds345ty76',
           db_host: 'wdsa12'
          }    


        function decrypt(responseObj,key){  
            var list = []
            //get the keys from the responseObj 
            Object.keys(responseObj).forEach(function(key){
                    //Push the keys into a list
                    list.push(key);
                })
            console.log(list)

            try{
                for(var i =0;i<list.length;i++){
                    //Decrypt the values of the key
                    var decipher = crypto.createDecipher('aes256', key);
                    //Assign The decrypted value to the keys
                    responseObj[list[i]] = decipher.update(responseObj[list[i]], 'hex', 'utf8') + decipher.final('utf8')
                }
                return responseObj;

            }catch(err){
                console.log(err);
            }   
        }  


    var res = decrypt(responseObj,key)
    console.log(res)
var responseObj={
数据库配置:{
db_用户:“das1234”,
},
环境委员会:{
db_con:‘ds67’
},
db_密码:“ds345ty76”,
db_主机:“wdsa12”
}    
函数解密(responseObj,key){
变量列表=[]
//从responseObj那里拿到钥匙
Object.key(responseObj).forEach(函数(key){
//将按键按入列表
列表。按(键);
})
console.log(列表)
试一试{
对于(var i=0;i
让我们首先阐明JSON实际上是什么。JSON是一种文本,
与语言无关的数据交换格式,很像XML、CSV或YAML

资料来源:

Being说你的问题是在不调用键的情况下迭代对象本身。你正在寻找这个:

for (variable in object) {... }
以下是MDN的一个示例:

let obj = {a:1, b:2, c:3};

for (let prop in obj) {
  console.log("o." + prop + " = " + obj[prop]);
}
资料来源:


旁注

我不知道您想用JSON结构实现什么,但您可以通过以下方式更改JSON:

var responseObj ={ 
           db_config:{
             db_user: 'das1234',
            },
           env_con:{
             db_con:'ds67'
           },
           db_password: 'ds345ty76',
           db_host: 'wdsa12'
          }   
为此:

let responseObj = { 
           db_user: 'das1234',
           db_con:'ds67',
           db_password: 'ds345ty76',
           db_host: 'wdsa12',
           }
新的JSON将是扁平的,您不必担心通过嵌套对象进行迭代

例如:

for (let prop in responseObj ) {
  console.log("o." + prop + " = " + responseObj [prop]);
}

您已经拥有了几乎所有的部分。您知道如何从对象获取属性名称(键):

Object.keys(obj);
…以及如何循环通过它们

.forEach(...)
唯一缺少的部分是递归和检测属性值是另一个对象。您可以使用
typeof
typeof something==“object”
告诉我们
something
是一个对象(或
null

见评论:

var responseObj = {
    db_config: {
        db_user: 'das1234',
    },
    env_con: {
        db_con: 'ds67'
    },
    db_password: 'ds345ty76',
    db_host: 'wdsa12'
};

function decrypt(obj, key) {
    // Loop through this object's properties
    Object.keys(obj).forEach(function(key) {
        // Get this property's value
        var value = obj[key];
        // If not falsy (null, empty string, etc.)...
        if (value) {
            // What is it?
            switch (typeof value) {
                case "object":
                    // It's an object, recurse
                    decrypt(value, key);
                    break;
                case "string":
                    // It's a string, decrypt
                    var decipher = crypto.createDecipher('aes256', key);
                    obj[key] = decipher.update(value, 'hex', 'utf8') + decipher.final('utf8');
                    break;
            }
        }
    })
}

var res = decrypt(responseObj, key);
console.log(res);

“如何在nodejs中迭代Json的嵌套属性?”您不知道。Json是用于数据交换的文本符号。()如果您处理的是JavaScript源代码,而不是字符串,那么您就没有处理Json。[(更多]]不过,在解析对象树时,您可以循环遍历所得到的对象树的嵌套属性,此时您不再处理JSON。但问题中根本没有JSON,因此不需要解析。您已经获得了键并使用它们查找对象的属性。您卡在哪里了?您似乎有基本的Crowder您在尝试以这种形式获取json的解决方案时是对的,我可以在这里看到json let responseObj={db_user:'das1234',db_con:'ds67',db_password:'ds345ty76',db_host:'wdsa12',}但是如果Json是嵌套的,我如何继续呢?再说一遍:那不是Json。那只是一个JavaScript对象初始值设定项。谢谢,但我必须迭代我提到的Json,因为我只得到了这种形式的响应。我试图用它来迭代解密Json值。你可以在循环中做另一个内部检查,比如:
If(typeof responseObj[prop]=='object'
(小心typeof)。然后对(object中的变量){…}
(递归)执行另一个
。然后返回所需的值。另一个选项是在迭代给定JSON之前展平它。这里有几个选项。