更改JSON文件的值但保留结构

时间:2018-04-07 22:31:22

标签: javascript

我们说我有一个像这样的JSON文件:

{
    "public": {
        "hello": "world",
        "bye": "stranger"
    }
}

然后我有一个表单,我可以在其中修改hellobye的值。

var keys = [];
var values = [];

$.each($(event.currentTarget).find('input'), function(key, val) {
    if($(this).attr('name') == 'skey') {
        keys.push($(this).val());
    }

    if($(this).attr('name') == 'svalue') {
        values.push($(this).val());
    }
});

在方法中我操纵它

var rootDir = process.cwd().split('.meteor')[0];
rootDir = rootDir.replace(/\\/g, "/");
rootDir = rootDir + "private/";
var fileName = 'settings.default.json';
var filepath = rootDir + fileName;

for (var i = 0; i < obj.length; i++) {
    for (var i = 0; i < values.length; i++) {
        obj[i] = values[i];
    }
}

fs.writeFileSync(filepath, JSON.stringify(obj), 'binary');

问题是它会打印出来 遗憾的是,["new value of hello", "new value of bye"]和我不知道如何让它看起来像:

{
    "public": {
        "hello": "new value of hello",
        "bye": "new value of bye"
    }
}

如何做到这一点?

1 个答案:

答案 0 :(得分:0)

假设obj是您要修改的对象:

for (var i = 0; i < values.length; i++) {
    obj[keys[i]] = values[i];
}