gpt4 book ai didi

javascript - 转换 node.js 流的简洁方法?

转载 作者:搜寻专家 更新时间:2023-10-31 23:49:02 25 4
gpt4 key购买 nike

我正在尝试将换行符分隔的 JSON 文件转换为 CSV(这是一项愚蠢的任务,但没关系),我很好奇如何在 node.js .到目前为止,我所拥有的是,

var csv = require('csv'), 
fs = require('fs'),
JSONStream = require('JSONStream');

var stream = fs.createReadStream('input.json', {encoding: 'utf8'})
.pipe(JSONStream.parse());
csv().from(stream).to('out.csv');

这行得通,但不允许我表达对键的排序。例如,如果我有这样的输入文件,

{"foo": 1, "bar": 2}
{"bar": 3, "foo": -1}

我想添加一个变形函数,

function(line_object) { return [line_object.foo, line_object.bar]; };

这样我的输出将是行 1, 2-1, 3 ,对应foo作为第 1 列和 bar作为第 2 列,而不是当前行为 1, 23, -1 .

但是,所有在线示例对于添加转换器似乎都相当冗长。他们似乎创造了require('stream').Transform对象,然后设置 _transform作用于那些对象。 问题:有没有更简洁/更简洁的方法来做到这一点?非常感谢,请原谅我的无知,因为这几乎是第一个node.js我写的代码。

最佳答案

event-stream可能有用:

var fs         = require('fs');
var csv = require('csv');
var JSONStream = require('JSONStream');
var es = require('event-stream');

es.pipeline(
fs.createReadStream('input.json'),
JSONStream.parse(),
es.map(function(data, next) {
next(null, [ data.foo, data.bar ]);
}),
csv().to('out.csv')
);

关于javascript - 转换 node.js 流的简洁方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19329312/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com