Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用节点JS将txt文件转换为json_Javascript_Node.js_Json_Parsing - Fatal编程技术网

Javascript 使用节点JS将txt文件转换为json

Javascript 使用节点JS将txt文件转换为json,javascript,node.js,json,parsing,Javascript,Node.js,Json,Parsing,我有一个简单的txt文件,其中包含这种格式的数据,有数百万行: {"a":9876312,"b":1572568981512} {"a":9876312,"b":1572568981542} 我想使用NodeJs中的reduce函数和return语句将其转换为具有“dot”json扩展名的文件,可能如下所示: [{"a":9876312,"b":1572568981512}, {"a":9876312,"b":1572568981542}] 任何帮助都将非常感激。谢谢:) 到目前为止,我试过

我有一个简单的txt文件,其中包含这种格式的数据,有数百万行:

{"a":9876312,"b":1572568981512}
{"a":9876312,"b":1572568981542}
我想使用NodeJs中的reduce函数和return语句将其转换为具有“dot”json扩展名的文件,可能如下所示:

[{"a":9876312,"b":1572568981512},
{"a":9876312,"b":1572568981542}]
任何帮助都将非常感激。谢谢:)

到目前为止,我试过:

const fs = require('fs');
const FILE_NAME = 'abc.txt';
const x = mapEvents(getJSONFileData(FILE_NAME));

function getJSONFileData(filename) {
   return fs.readFileSync(filename, 'utf-8')
   .split('\n')
   .map(JSON.parse)
}

function mapEvents(events) {
events.reduce((acc, data) => {
  return [{data.a, data.b}]
});
}

console.log(x)

我不断得到一个“未定义”的值

我在您的代码中发现了一些问题

  • 您还没有从mapEvents函数返回任何内容,这使得您的varaible x值未定义
  • getJSONFileData需要一些修复
  • 您可以使用以下代码:-

    const fs = require('fs');
    const FILE_NAME = 'abc.txt';
    const x = mapEvents(getJSONFileData(FILE_NAME));
    
    function getJSONFileData(filename) {
      return fs
        .readFileSync(filename, 'utf-8')
        .split('\n')
        .filter(Boolean)
        .map(JSON.parse);
    }
    
    function mapEvents(events) {
      return JSON.stringify(events);
    }
    
    console.log(x);
    

    这回答了你的问题吗?我在这件事上出错了。。但是我希望用reduce函数和return语句来实现它。您得到了什么错误?意外的标记,在JSONPrint中,您得到错误的
    ,因为错误告诉您其中一行不是JSON。在实现代码时,我注意到,如果我在代码中有一个类似“4611687012137402260”的数字。。它正在变成“4611687012137402000”。。因为它被视为一个数字。。有什么办法克服这个问题吗?@TheAlchest这个问题与const fs=require(“fs”)有关;const FILE_NAME=“abc.txt”;const x=mapEvents(getJSONFileData(文件名));函数getJSONFileData(文件名){return fs.readFileSync(文件名,“utf-8”).split(“\n”).filter(布尔);}函数mapEvents(事件){return JSON.stringify(事件)。replace(/\\\\\”“/g,”;)console.log(x);@TheAlchesman您可以使用上面的代码来修复此问题。这实际上会将整个json数组转换为一个字符串。它不再是有效的json了/