【发布时间】:2020-10-20 17:10:23
【问题描述】:
要求:从json文件中读取,更新值并写入json文件
我有一个 json 文件 test.json,其中包含以下数据
test.json
{
"login": "readfromjson",
"pwd": "pwd",
"taskName": "task",
"selectors": [
{
"Edit": "Edit",
"Complete": "Complete",
"Review": "Review"
}
]
}
function.js //包含从fs读取、更新json值的函数
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 数据,它可以工作,但从 fs 读取时会出现问题。
var obj = {
"login": "readfromjson",
"pwd": "pwd",
"taskName": "task",
"selectors": [
{
"Edit": "Edit",
"Complete": "Complete",
"Review": "Review"
}
]
}
【问题讨论】:
标签: javascript node.js json fs