【发布时间】:2021-11-16 19:49:39
【问题描述】:
在 NodeJS 中,我有一个日志文件,其中我的日志格式为:
{"time":"2021-09-23T11:36:18.076Z","type":"info","message":"some message","data":{"id":123}},
{"time":"2021-09-23T11:36:18.076Z","type":"info","message":"some message","data":{"id":123}},
{"time":"2021-09-23T11:36:18.076Z","type":"info","message":"some message","data":{"id":123}},
这些基本上是对象,用逗号分隔。我需要做的是读取此文件的内容并将日志转换为对象数组(我可以稍后操作)。
我正在尝试类似的东西:
let fileLogs = "./data/myfile.log";
fs.readFile(fileLogs, (err, fileLogsContent) => {
if (err) {
console.log("cannot read log file");
return;
}
//I know I need to manipulate the fileLogsContent here, before doing JSON.parse
let logsContent = { ...JSON.parse(fileLogsContent) };
//do something here with the array of objects 'logsContent'
});
由于日志文件中的内容不是可以解析的格式,所以上面的JSON.parse失败了。我的想法是将日志文件采用以下格式:
[
{"time":"2021-09-23T11:36:18.076Z","type":"info","message":"some message","data":{"id":123}},
{"time":"2021-09-23T11:36:18.076Z","type":"info","message":"some message","data":{"id":123}},
{"time":"2021-09-23T11:36:18.076Z","type":"info","message":"some message","data":{"id":123}}
]
这意味着我需要在运行中添加[ 作为第一个字符,并将最后一个, 替换为]。我不知道我该怎么做,因为 fileLogsContent 实际上是一个缓冲区。那么如何阅读内容并进行我提到的操作,以便以后能够对其进行解析并将其转换为array of objects 格式?
【问题讨论】:
标签: node.js buffer readfile streamreader node-streams