📜  nodejs csv 从链接到 json - Javascript (1)

📅  最后修改于: 2023-12-03 14:44:43.753000             🧑  作者: Mango

从链接中获取 CSV 并转换为 JSON

在本文中,我们将学习如何使用 Node.js 从一个链接中获取 CSV 数据,将其转换为 JSON 并写入到一个文件中。

目录
安装 csvtojson 模块

我们将使用 csvtojson 模块来将 CSV 数据转换为 JSON。在终端中输入以下命令来安装该模块:

npm install csvtojson
获取 CSV 数据

我们将使用 axios 模块来获取 CSV 数据。在终端中输入以下命令来安装该模块:

npm install axios
const axios = require('axios');

const getCsvData = async (url) => {
  try {
    const response = await axios.get(url);
    const csvData = response.data;
    return csvData;
  } catch (error) {
    console.error(error);
  }
};

const csvUrl = 'https://example.com/data.csv';
const csvData = await getCsvData(csvUrl);

getCsvData 方法中,我们使用 axios.get 方法来获取 CSV 数据并返回该数据。在 csvUrl 中,你需要替换为你要获取数据的实际链接。

从 CSV 转换为 JSON
const csv = require('csvtojson');

const convertCsvToJson = async (csvData) => {
  try {
    const jsonArray = await csv().fromString(csvData);
    return jsonArray;
  } catch (error) {
    console.error(error);
  }
};

const jsonArray = await convertCsvToJson(csvData);

convertCsvToJson 方法中,我们将使用 csvtojson 模块将 CSV 数据转换为 JSON 数组并返回该数组。

写入 JSON 到文件

我们将使用 fs 模块将 JSON 数组写入到一个文件中。

const fs = require('fs');

const writeJsonToFile = (jsonArray, filePath) => {
  const jsonString = JSON.stringify(jsonArray, null, 2);
  fs.writeFile(filePath, jsonString, (err) => {
    if (err) console.log(err);
    console.log(`JSON data written to ${filePath}`);
  });
};

const filePath = './data.json';
writeJsonToFile(jsonArray, filePath);

writeJsonToFile 方法中,我们将使用 JSON.stringify 方法将 JSON 数组转换为字符串。然后,我们将使用 fs.writeFile 方法将该字符串写入到一个文件中。在 filePath 变量中,你需要替换为你要写入数据的实际文件路径和文件名。

完整代码
const axios = require('axios');
const csv = require('csvtojson');
const fs = require('fs');

const getCsvData = async (url) => {
  try {
    const response = await axios.get(url);
    const csvData = response.data;
    return csvData;
  } catch (error) {
    console.error(error);
  }
};

const convertCsvToJson = async (csvData) => {
  try {
    const jsonArray = await csv().fromString(csvData);
    return jsonArray;
  } catch (error) {
    console.error(error);
  }
};

const writeJsonToFile = (jsonArray, filePath) => {
  const jsonString = JSON.stringify(jsonArray, null, 2);
  fs.writeFile(filePath, jsonString, (err) => {
    if (err) console.log(err);
    console.log(`JSON data written to ${filePath}`);
  });
};

const main = async () => {
  const csvUrl = 'https://example.com/data.csv';
  const csvData = await getCsvData(csvUrl);
  const jsonArray = await convertCsvToJson(csvData);
  const filePath = './data.json';
  writeJsonToFile(jsonArray, filePath);
};

main();

这是一个完整的代码示例,它将从链接中获取 CSV 并将其转换为 JSON,最后写入到一个文件中。在执行完该脚本后,你将在指定文件路径中找到一个 JSON 文件,该文件包含了从 CSV 数据中提取的 JSON 数据。