gpt4 book ai didi

json - Node js : change csv file encoding programatically and parse to json

转载 作者:行者123 更新时间:2023-12-04 23:01:59 25 4
gpt4 key购买 nike

我有一个使用 utf-16 编码的 csv 文件,需要将其编码更改为 utf8 并将其转换为 JSON。我正在使用 csvtojsoniconv-lite 模块。这是我的代码:

var data = fs.createReadStream("myfile.csv");
data.pipe(iconv.decodeStream('utf16'))
.pipe(iconv.encodeStream('utf8'))
.pipe(fs.createWriteStream("encoded.csv"));
var Converter = require("csvtojson").Converter;
var csvStr = fs.readFileSync("encoded.csv").toString();
var converter = new Converter({});
converter.fromString(csvStr, function(err, jsonObj) {
if (err) {
handleError(err)
}
console.log(jsonObj)
});

问题是 iconv 用正确的编码转换 csv 文件,但是当我读取这个文件并调用 toString() 方法时,它返回一个空字符串。我该如何解决这个问题?

最佳答案

我认为异步 pipe 可能与此有关。您可以确保只在 encoded.csv 完成后打开它,方法是将逻辑放入 end 事件中。

var data = fs.createReadStream("myfile.csv");
data.pipe(iconv.decodeStream('utf16'))
.pipe(iconv.encodeStream('utf8'))
.pipe(fs.createWriteStream("encoded.csv"));

data.on('end', function() {

var Converter = require("csvtojson").Converter;
var csvStr = fs.readFileSync("encoded.csv").toString();
var converter = new Converter({});
converter.fromString(csvStr, function(err, jsonObj) {
if (err) {
handleError(err)
}
console.log(jsonObj)
});
}

https://nodejs.org/api/stream.html#stream_readable_pipe_destination_options

关于json - Node js : change csv file encoding programatically and parse to json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32375816/

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