如何使用 node-csvtojson 创建 JSON 数组?

How to create an JSON array using node-csvtojson?

使用 node-csvtojson 时如何将数据输出为 json 数组?

const request = require("request");
const csv = require("csvtojson");
const fs = require("fs");

const readStream = request.get("http://www.example.com/some.csv");
const writeStream = fs.createWriteStream("./some.json");
const converter = csv({
  includeColumns: /Column3|Column2/
});

readStream.pipe(converter).pipe(writeStream);

假设数据结构如下:

Column1,Column2,Column3
1,2,3
one,two,three

我希望输出文件包含:

[
  { "Column2": "2", "Column3": "3" },
  { "Column2": "two", "Column3": "three" }
]

我实际上得到了以下信息:

{ "Column2": "2", "Column3": "3" }
{ "Column2": "two", "Column3": "three" }

如何确保我得到一个 JSON 数组作为输出?

我知道 this issue 但我注意到 toArrayString 已从 api 中删除。

在询问时我无法用 csvtojson api 做我想做的事。

如果有人感兴趣,我最终的解决方案是使用 through2-mapthrough2-reduce 创建一个数组。

...

const map = require("through2-map");
const reduce = require("through2-reduce");

...

readStream
  .pipe(converter)
  .pipe(reduce((previous, current) => {
    return previous ? `${previous},${current}` : current;
  })
  .pipe(map(chunk => `[${chunk}]`))
  .pipe(writeStream);

这只是一个迟到的回复。 在版本 2.0.10 中,JSON 数组格式又回来了。

只需将downstreamFormat设置为json

csv({downstreamFormat:"json"}).fromFile(fileName).pipe(fileWritableStream);

详情可见here