我有两个名为one.json和two.json的json文件,如果one.json的任何ProjectId的值与two.json的ID匹配,则one.json具有多个projectId,two.json的completedCount应该更改为匹配ID的complete.one.json ... 我不知道如何使用JavaScript来读取或写入JSON文件,因为我是JavaScript的新手,因此对此的任何帮助也将受到赞赏 我已经尝试过使用数组。
one.json如下
[ { projectId: '230',
title: 'Nikhil',
status: 'Nikhil',
seenCount: 0,
inProgressCount: 0,
completedCount: 30 },
{ projectId: 434,
title: null,
status: null,
seenCount: 0,
inProgressCount: 0,
completedCount: 1 } ]
two.json如下
[ { id: '434',
name: 'project-qa-test',
customQuestion: 'What did you get done today?',
maxSyncItems: null,
orderIndex: 0,
hidden: false,
dones: [],
unReported: 0,
seenCount: 0,
inProgressCount: 0,
completedCount: 0 } ]
需要在two.json中更新completedCount的值,并使用javaScript打印它...
答案 0 :(得分:2)
下面的代码应该可以解决您的读取,逻辑和写入文件问题。
'use strict';
const fs = require('fs');
let rawdata_one = fs.readFileSync('one.json');
let rawdata_two = fs.readFileSync('two.json');
let onedata = JSON.parse(rawdata_one);
let twodata = JSON.parse(rawdata_two);
onedata.forEach(
function(obj){
let ob = twodata.findIndex( o => o.id == obj.projectId );
if(ob != -1){
twodata[ob].completedCount = obj.completedCount;
}
}
)
let data = JSON.stringify(twodata);
fs.writeFileSync('two.json', data);
此写入操作将使用更新的数据覆盖您的two.json。
您还可以使用require('one.json')读取json文件。但是,在整个代码中只能执行一次。
答案 1 :(得分:1)
以上回答略有改善:
one.forEach((obj) => {
let ob = two.find( o => o.id == obj.projectId );
if(ob) { ob.completedCount = obj.completedCount };
console.log(ob);
})