我有一个对象的 .log 文件,如何将它们转换为 JSON 对象以便在 Javascript 中进行迭代?

Posted

技术标签:

【中文标题】我有一个对象的 .log 文件,如何将它们转换为 JSON 对象以便在 Javascript 中进行迭代?【英文标题】:I have a .log file of objects how do I convert them to a JSON object for iterating through in Javascript? 【发布时间】:2018-10-27 05:14:34 【问题描述】:

这是我需要转换的 .log 文件的示例。我正在使用节点。

    "test": "data", "test1": 123, "foo": "feel me??"
    "test": "data", "test1": 123, "foo": "feel me??"
    "test": "data", "test1": 123, "foo": "feel me??"

我正在使用此代码导入它。

let data = fs.readFileSync(log_path, 'utf8', function(err, data)
  if (err) throw err;
  let tweets = data.split('\n').map(line => JSON.parse(line));

  return tweets;

  fs.close(data, (err) => 
    console.log(err);
  )
)

如您所见,它没有用逗号分隔,因此不是 JSON 格式。我正在尝试读取文件,然后将其拆分为新行,但这似乎不起作用。

【问题讨论】:

【参考方案1】:

假设"feel me??" 是一个属性,您可以将split 向上移动,然后将map 指向一个对象数组:

const text = `    "test": "data", "test1": 123, "foo": "feel me??"
    "test": "data", "test1": 123, "foo": "feel me??"
    "test": "data", "test1": 123, "foo": "feel me??"`;
const arrOfObjs = text.split('\n')
  .map(line => JSON.parse(line));
console.log(arrOfObjs);

另一个问题是readFileSync,顾名思义,读取文件同步。它不接受这样的回调。将文件读取代码更改为:

let data = fs.readFileSync(log_path, 'utf8');
// do stuff with the `data` string

请记住,由于您不使用流,you don't need fs.close

【讨论】:

当我在 .log 文件上使用 fs.readFileSync 时,它似乎没有返回我可以拆分的字符串。 您第一次提到这一点 - 那么您应该编辑您的问题以澄清这一点,并发布您的代码 已编辑。对不起。我认为这暗示我正在读取该格式的 .log 文件。 查看编辑 - readFileSync同步运行,而不是异步运行。它不接受回调。 听起来您正在使用的日志文本与您在问题中发布的文本不匹配。【参考方案2】:

我个人使用read-last-lines 包仅获取我的log 文件的最后几行。

为了使它工作,我不得不稍微修改接受答案中的代码,这对我自己很有帮助。如果有人遇到类似问题,我将在此处添加它。

readLastLines.read('info.log', 10)
      .then((lines) => 
        const arrOfStringObjs = lines.split('\n')
        let arrOfObjs = []
        arrOfStringObjs.forEach(strObj => 
          if (strObj !== undefined && strObj !== null && strObj !== '') 
            arrOfObjs.push(JSON.parse(strObj))
          
        );
        console.log(arrOfObjs)

希望对你有帮助。

【讨论】:

以上是关于我有一个对象的 .log 文件,如何将它们转换为 JSON 对象以便在 Javascript 中进行迭代?的主要内容,如果未能解决你的问题,请参考以下文章

将对象转换为 plist 文件,然后转换为数据

如何在 PHP 中将图像从 base 64 转换为它们的文件类型?

将 xml 转换为对象

如何将列表的括号从[]转换为()[重复]

将 SVG 组转换为多个“单独的”PN​​G 文件

如何加载 JSON 文件并将其转换为特定类型的对象?