【问题标题】:txt file to json using Node JS使用 Node JS 将 txt 文件转换为 json
【发布时间】:2020-04-13 22:00:06
【问题描述】:

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

{"a":9876312,"b":1572568981512}
{"a":9876312,"b":1572568981542}

我想使用 NodeJs 中的 reduce 函数和 return 语句将其转换为带有“点”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)

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

【问题讨论】:

  • 这能回答你的问题吗? Nodejs Convert text to JSON
  • 我遇到了一个错误..但我希望用reduce函数和return语句来做到这一点。
  • 你遇到了什么错误?
  • 意外的令牌,在 JSON 中
  • 打印出现错误的line,因为错误告诉您其中一行不是 JSON。

标签: javascript node.js json parsing


【解决方案1】:

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

  1. 您没有从 mapEvents 函数返回任何内容,这使得您的变量 x 值未定义。
  2. 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);

【讨论】:

  • 在实现您的代码时,我注意到,如果我在代码中有一个像“4611687012137402260”这样的数字......它会变成“4611687012137402000”......因为它被视为一个数字......有什么办法可以克服吗?
  • @thealchemist 这个问题与stackoverflow.com/questions/15869275/…有关
  • const fs = require("fs");常量 FILE_NAME = "abc.txt";常量 x = mapEvents(getJSONFileData(FILE_NAME)); function getJSONFileData(filename) { return fs .readFileSync(filename, "utf-8") .split("\n") .filter(Boolean); } function mapEvents(events) { return JSON.stringify(events).replace(/\\|"/g, ""); } console.log(x);
  • @thealchemist 你可以使用上面的代码来解决这个问题。
  • 这实际上将整个 json 数组转换为一个字符串.. 它不再是有效的 json.. :/
猜你喜欢
  • 2021-08-28
  • 2017-02-09
  • 2017-06-18
  • 2013-08-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-09
  • 2019-02-08
相关资源
最近更新 更多