我有一个服务输出的文件目录,每个文件都没有扩展名。示例文件名:
all_events_20170406v1
all_events_20170406v2
在每个文件中有几个未命名的JSON对象,例如:
{"event":"event1","id":"123"}
{"event":"event2","id":"456","test":"text","foo":"bar"}
使用node.js我想遍历每个文件,然后在文件的每个对象中,然后捕获重复数据删除的密钥名称。我无法弄清楚如何阅读未命名的对象。
我需要的输出是:
event
id
test
foo
任何建议?
答案 0 :(得分:0)
好的,使用glob
模块(npm install glob
):
let result = [];
const files = glob.sync('*', { cwd: 'my_folder' });
for (const filename of files) {
const filePath = 'my_folder/' + filename;
const content = fs.readFileSync(filePath, 'utf8');
const lines = content.split('\n');
const objects = lines.map(line => JSON.parse(line));
for (const object of objects) {
for (const key in object) { // pay attention that "in" used here
if (Object.hasOwnProperty(key) && result.indexOf(key) === -1) result.push(key);
}
}
}
console.dir(result);
免责声明:此代码未经过测试。仅供参考。此外,这里我们一次读取整个文件,这对于mid-mid文件是可以的。如果使用较大的文件,请使用readline模块。有关详细信息,请参阅Read a file one line at a time in node.js?。