我有一个需要解析包含对象的.txt
文件的函数。它不是正确的JSON,因为没有逗号,也没有周围的数组。
这是我目前的职能:
module.exports = {
bot_detection: function(input_file_path) {
fs.readFile(input_file_path, 'utf-8', function(err, data){
if (err) { throw err };
data = "[" + data.replace(/(?:\r\n|\r|\n)/g, ',').slice(0, -1) + "]";
console.log(data);
}
}
}
这是文件路径中的一些示例数据:
{"timestamp": 1487184625, "user": "Eric", "action": "navigate"}
{"timestamp": 1487184655, "user": "Bill", "action": "browse"}
{"timestamp": 1487184685, "user": "Eric", "action": "key press"}
{"timestamp": 1487184715, "user": "John", "action": "idle"}
{"timestamp": 1487184755, "user": "Tran", "action": "search"}
{"timestamp": 1487098049, "user": "Tran", "action": "click"}
{"timestamp": 1487098079, "user": "Eric", "action": "click"}
{"timestamp": 1487098109, "user": "Tran", "action": "click"}
{"timestamp": 1487098139, "user": "Bill", "action": "navigate"}
由于fs.readFile
是异步的,因此我无法在外部创建变量并将其重新分配给数据读取。有没有办法可以将转换后的JSON存储到变量中,以便我可以更轻松地操作它(例如map
)?
答案 0 :(得分:0)
JSON.parse()应该将完成的字符串转换为可用的对象。
你也可以eval()字符串虽然这样做可能会有安全问题,因为它会执行存储在文件中的注入javascript。