sails:如何将数组转换为json对象

时间:2015-09-07 12:19:22

标签: arrays json node.js csv

我正在尝试使用fast-csv节点模块读取.csv文件。如果我读取该文件意味着它将返回如下所示的数据数组

[ 'Vehicle', 'Date', 'Location', 'Speed' ]
[ 'BMW',
  '30, Jul 2013 09:24 AM',
  'Hauz Khas, Enclave, New Delhi, Delhi, India',
  '42' ]
[ 'Honda CBR',
  '30, Jul 2013 12:00 AM',
  'Military Road,  West Bengal 734013,  India',
  '0' ]

我想将其转换为json对象,就像键值对一样。我正在尝试下面的代码片段来读取csv文件

var csv = require("fast-csv");
csv.fromPath(uploadedFiles[0].fd)
        .on("data", function(rows){
               console.log(rows);
        });

我怎么能把它转换成json。任何人都可以帮助我。

2 个答案:

答案 0 :(得分:0)

显然,行[0]是你的关键地图:

var keyMap   = []; 
var jsonRows = []; 

for(var i in rows) 
 {
   if(i === 0) 
    {
      keyMap = rows[i]; //save your keys
    }
   else
    {
      var row = rows[i];  //get the current record
      var obj = {}; 
      for(var r in row)
       {
          obj[keyMap[r]] = row[r];  //add each value of current record with its corresponding mapped key
       }
      jsonRows.push(obj); 
    }
 }

 console.log(jsonRows); 

答案 1 :(得分:0)

使用标题选项:

var csv = require("fast-csv");
csv.fromPath(uploadedFiles[0].fd,{ headers : [ 'Vehicle', 'Date', 'Location', 'Speed' ]})
        .on("data", function(data){
               console.log(data);
        });

您还可以指定标题:

<script>
    var app = angular.module('my_app');

    app.config(['$httpProvider', function($httpProvider) {
        $httpProvider.defaults.headers.common['X-CSRFToken'] = '{{ csrf_token|escapejs}}';
    }]);
</script>