使用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中删除了。
发布于 2019-01-30 04:38:36
在询问时,我无法使用csvtojson应用程序接口执行我想要的操作。
如果有人感兴趣,我最终的解决方案是使用through2-map和through2-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);发布于 2019-06-27 06:45:56
只是对这件事的反应太晚了。在2.0.10版本中,JSON数组格式又回来了。
只需将downstreamFormat设置为json
csv({downstreamFormat:"json"}).fromFile(fileName).pipe(fileWritableStream);详情请访问:here
https://stackoverflow.com/questions/54083286
复制相似问题