使用fs.readFile存储变量?

时间:2018-04-09 20:17:46

标签: arrays json fs

我有一个需要解析包含对象的.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)?

1 个答案:

答案 0 :(得分:0)

JSON.parse()应该将完成的字符串转换为可用的对象。

你也可以eval()字符串虽然这样做可能会有安全问题,因为它会执行存储在文件中的注入javascript。