如何使用 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-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);
这只是一个迟到的回复。
在版本 2.0.10
中,JSON 数组格式又回来了。
只需将downstreamFormat
设置为json
csv({downstreamFormat:"json"}).fromFile(fileName).pipe(fileWritableStream);
详情可见here
使用 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-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);
这只是一个迟到的回复。
在版本 2.0.10
中,JSON 数组格式又回来了。
只需将downstreamFormat
设置为json
csv({downstreamFormat:"json"}).fromFile(fileName).pipe(fileWritableStream);
详情可见here