Nodejs 将文本转换为 JSON

Vic*_* Le 4 javascript node.js

出于某种原因,我很难将这个 txt 文件转换为实际的 javascript 数组。

我的Json.txt

{"action": "key press", "timestamp": 1523783621, "user": "neovim"}
{"action": "unlike", "timestamp": 1523784584, "user": "r00k"}
{"action": "touch", "timestamp": 1523784963, "user": "eevee"}
{"action": "report as spam", "timestamp": 1523786005, "user": "moxie"}
Run Code Online (Sandbox Code Playgroud)

目前我所拥有的不起作用

const fs = require('fs');

function convert(input_file_path) {
    const file = fs.readFileSync(input_file_path, 'utf8');
    const newFormat = file
      .replace(/(\r\n\t|\n|\r\t)/gm,'')
      .replace(/}{/g, '},{');

    console.log([JSON.parse(newFormat)]);
}

convert('myJson.txt');
Run Code Online (Sandbox Code Playgroud)

Mar*_*nde 5

由于您的文件每行包含一个 JSON 对象,因此您可以使用readline.

然后解析每一行,并推送到一个数组中,然后在完全读取文件后返回(解析)该数组。

'use strict';

const fs = require('fs');
const readline = require('readline');

function convert(file) {

    return new Promise((resolve, reject) => {

        const stream = fs.createReadStream(file);
        // Handle stream error (IE: file not found)
        stream.on('error', reject);

        const reader = readline.createInterface({
            input: stream
        });

        const array = [];

        reader.on('line', line => {
            array.push(JSON.parse(line));
        });

        reader.on('close', () => resolve(array));
    });
}


convert('myJson.txt')
    .then(res => {
        console.log(res);
    })
    .catch(err => console.error(err));
Run Code Online (Sandbox Code Playgroud)