javascript - 修改嵌套 JSON 对象

标签 javascript json

我有一个包含加密值的 json 对象,我将简化它并假装所有值都是数字,并且我需要数字 x3 来解决这个问题。有没有办法循环遍历 json 对象并更新每个值,然后返回原始对象的解密版本:

var encrypted = {
         a: 10,
         b: 4,
         c: {x:3, y:2, z:1},
 }

var decrypted = decryptJSON(encrypted) //<--- looking for this function


//decrypted = {
//         a: 30,
//         b: 12,
//         c: {x:9, y:6, z:3},
// }

我尝试使用类似 https://stackoverflow.com/a/29516227/620723 的内容循环遍历对象但这仅适用于非嵌套 json 对象。

此外,我上面给出的示例仅嵌套一层,实际上我可能在嵌套内嵌套内嵌套......

最佳答案

您可以编写一个递归函数来遍历对象并更新您的值。这是一个简单的例子:

var encrypted = {
    a: 10,
    b: 4,
    c: {x: 3, y: 2, z: 1},
};

var updateObject = function (obj) {
    for (var key in obj) {
        obj[key] = updateValue(obj[key]);
    }
    return obj;
}

var updateValue = function(value) {
    if (typeof(value) === "object") {
        return updateObject(value);
    } else {
        return value * 3;
    }
}

updateObject(encrypted);
console.log(encrypted);

请注意,只有当对象中只有对象和数值时,这才有效。如果您的数据更加动态,您肯定需要调整函数。

这应该可以帮助你开始!

关于javascript - 修改嵌套 JSON 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47659496/

相关文章:

java - Android 从手机存储中获取 JSON 数组

javascript - 用 javascript 或 jquery 替换现有的规范标签

javascript - JavaScript 中最快的属性注入(inject)?

javascript - 使用 Twitter 登录生成 token

javascript - 使用 javascript 中的 laravel 选项

mysql - 将 mongoDB 集合转换为 mySQL 数据库

javascript - 嵌套 json 到 ng-repeat 无法正常工作

php - 如何在 php 中传递 $.getjson 数据,最好使用 laravel 的 @foreach

javascript - 将文档属性中的数组与 dataRange 中的数组进行比较不起作用

javascript - Knockout JS过滤