Требование: чтение из файла json, обновление значения и запись в файл json
У меня есть файл json test.json, который содержит данные ниже
test.json
{
"login": "readfromjson",
"pwd": "pwd",
"taskName": "task",
"selectors": [
{
"Edit": "Edit",
"Complete": "Complete",
"Review": "Review"
}
]
}
function.js // содержит функцию для чтения, обновляет значение json из fs
function writeToJsonKey(fileName, keyName, value){
let fullpath = PATH.resolve(GETPATH, fileName);
let rawdata = FS.readFileSync(fullpath,'utf8');
console.log(rawdata) //returns data as per json and is of string type
let data = JSON.parse(rawdata);
console.log(rawdata) //returns [object Object]
var i;
keyName = keyName.split('.');
for (i = 0; i < keyName.length; i++)
{
data = data[keyName[i]];
}
data[keyName[i]] = value;
console.log(keyName[i]) //returns required key where update to be done
console.log(data[keyName[i]]) //returns undefined??
FS.writeFileSync(fullpath, JSON.stringify(data, null, 2), function (err) {
if (err) throw err;
console.log('Saved!');
});
}
вызов функции
writeToJsonKey('data.json', 'selectors.0.Edit', 'updated value')
Результат: Как показано в console.log, все данные json заменяются на "Edit".
Примечание. Если я читаю данные json, как показано ниже, они работают, но возникают проблемы при чтении из файловой системы.
var obj = {
"login": "readfromjson",
"pwd": "pwd",
"taskName": "task",
"selectors": [
{
"Edit": "Edit",
"Complete": "Complete",
"Review": "Review"
}
]
}