[英]How do I iterate through nested properties of an json object and create a new array list?
[英]How Do I iterate through nested properties of Json in nodejs?
我有一个具有三层嵌套的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)
我尝试了很多方法,我只是感到困惑,如何动态地获取键和值,而又不使用静态的键。 有任何关于请帮助的想法可以找到答案。
您已经掌握了几乎所有内容。 您知道如何从对象获取属性名称(键):
Object.keys(obj);
...以及如何遍历它们
.forEach(...)
唯一缺少的部分是递归并检测到属性的值是另一个对象。 您可以使用typeof
来测试taht: 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);
首先让我们澄清一下什么是JSON。 JSON是一种文本形式的,不依赖语言的数据交换格式,非常类似于XML,CSV或YAML。
那只蜜蜂说你的问题是关于迭代对象本身而不需要键。 您正在寻找这个:
for (variable in object) {... }
这是来自MDN的示例:
let obj = {a:1, b:2, c:3};
for (let prop in obj) {
console.log("o." + prop + " = " + obj[prop]);
}
来源: https : //developer.mozilla.org/de/docs/Web/JavaScript/Reference/Statements/for...in
边注
我不知道您想使用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]);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.