首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将CSV数组转换为JSON NodeJS

将CSV数组转换为JSON NodeJS
EN

Stack Overflow用户
提问于 2019-05-24 23:54:27
回答 2查看 526关注 0票数 0

我正在从包含csvURL中抓取数据。我抓取的数据的格式是这样的:

我在Node.js中使用nodejs-requestify packagehttps://www.npmjs.com/package/requestify来做这件事

当我操控response.getBody()时,它的格式与提供的截图完全相同。

我正在尝试将其转换为可以在循环中迭代的JSON array,以便将值插入到数据库中,但是,我正在努力将数据转换为JSON格式。

我尝试过以多种方式拆分数组(comma, single quote, double quote)。我已经尝试过JSON.parse()JSON.stringify() (两者结合使用)。

这是我正在使用的代码。最终,当我在循环中console.log行时,它应该是JSON格式的,但是,它仍然是逗号分隔值。

代码语言:javascript
复制
requestify.get('URL').then(function(response) {
  // Get the response body
  var dataBody = response.getBody();
  var lineArray = dataBody.split('\r\n');
  var data = JSON.parse(JSON.stringify(lineArray));

  for(var s = 0; s < data.length; s++) {
    var rows = data[s];
    console.log(rows)
  }
});
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-05-25 04:38:42

我使用csvtojsonaws-dsk解决了这个问题,因为我的csv托管在S3上。

代码语言:javascript
复制
async function startAWS(db){
  //Retrieve AWS IAM credentials for the 'master' user
  var awsCredentials;
  try{ 
    awsCredentials = await retrievePromise(config.get('aws')); 
  }
  catch (e) { 
    console.log({error:e},'startAWS error'); 
  }
  //Setup the AWS config to access our S3 bucket
  AWS.config = new AWS.Config({
    accessKeyId :  awsCredentials.principal,
    secretAccessKey :awsCredentials.credential,
    region:'us-east-1'
  });
  //Call S3 and specify bucket and file name
  const S3 = new AWS.S3();
  const params = {
    Bucket: '***',
    Key: '***' //filename
  };
  //Convert csv file to JSON
  async function csvToJSON() {
  // get csv file and create stream
  const stream = S3.getObject(params).createReadStream();
  // convert csv file (stream) to JSON format data
  const json = await csv().fromStream(stream);

  //connect to DB and continue script
  db.getConnection()
  .then(async (conn) => {
    if(json.length) {
      for(var s = 0; s < json.length; s++) {
        var rows = json[s];

        const insert = await conn.query(
          'SQL HERE'
        );
      }
    }
  })
  };
  csvToJSON();
}
票数 0
EN

Stack Overflow用户

发布于 2019-05-25 00:10:48

我想这是一个基本的误会

代码语言:javascript
复制
var lineArray = dataBody.split('\r\n');

lineArray现在包含如下内容

代码语言:javascript
复制
"a", "b", "c"

而是为了做像这样的事情

代码语言:javascript
复制
var data = JSON.parse(lineArray);

你需要lineArray成为

代码语言:javascript
复制
{ "a":"1", "b":"2", "c":"3" }

我认为你需要像这样的东西

代码语言:javascript
复制
const lineData = lineArray.split(',');
const keys = ["name", "age", "gender"];
const jsonLineData = {};
keys.forEach((key, index) => {
    jsonLineData[key] = lineData(index);
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56295963

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档