Измените значения файла JSON, но сохраните структуру

avatar
P. Nick
7 апреля 2018 в 22:31
45
1
0

Допустим, у меня есть такой файл JSON:

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

Затем у меня есть форма, в которой я могу редактировать значения hello и bye.

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)

avatar
Máté Safranka
7 апреля 2018 в 22:51
0

Предположим, что obj — это объект, который вы хотите изменить:

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