我有一个带有 Node JS
的项目,我正在使用 JSON
模块收集 http
的 node-fetch
信息。
这是我发现的异步使用node-fetch模块的方式,如果有可能改进这个功能,添加建议,我是这个模块的新手。
这是我阅读信息的code
:
const fetch = require('node-fetch');
(async () => {
try {
const res = await fetch('https://jsonplaceholder.typicode.com/users');
const headerDate = res.headers && res.headers.get('date') ? res.headers.get('date') : 'no response date';
const users = await res.json();
for(user of users) {
console.log(`Got user with id: ${user.id}, name: ${user.name}`);
}
} catch (err) {
console.log(err.message); //can be console.error
}
})();
我的问题:如何将所有信息提取到具有行数限制的 CSV 中?也就是说,CSV 的限制为 10 行(限制可能会有所不同),如果JSON 信息占用 30 行,将创建 3 个 CSV 来存储所有信息。我已经添加了 json-2-csv
模块,但我不知道如何使用它,或者这个模块是否是必要的或其他更好的东西。
答案 0 :(得分:1)
const { Parser } = require("json2csv");
const fetch = require("node-fetch");
const fs = require("fs");
const csvLimit = 3;
const getJson = async () => {
const response = await fetch("https://jsonplaceholder.typicode.com/users");
const responseJson = await response.json();
return responseJson;
};
const jsonToCsv = async () => {
const json = await getJson();
const json2csvParser = new Parser();
let i = 0,
j = 0;
while (j < json.length) {
let csv = [];
let temp = [];
for (j = i * csvLimit; j < (i + 1) * csvLimit; j++) {
temp.push(json[j]);
}
csv.push(json2csvParser.parse(temp));
fs.writeFileSync(`file${(i * csvLimit) / 3}.csv`, csv);
i++;
}
};
jsonToCsv();
如果您只需要 csv
文件中的特定字段,那么您可以通过这种方式将字段作为参数传递。
const json2csvParser = new Parser({fields})
答案 1 :(得分:0)