Entoverse

Reactのこと

AWS Lambda Node.js 8.10 外部のCSVファイルを取得しJSONにして返す

AWS Lambda Node.js 8.10 CSV to JSON変換

csv-streamを使いました。

npm install csv-stream

csvは下記のようなリスト

178634,0,0

コード

var csv = require('csv-stream');
var request = require('request');

var options = {
    delimiter : ',', // default is ,
    endLine : '\n', // default is \n,
    columns : ['c1', 'c2', 'c3'], 
    columnOffset : 3, // default is 0
};

var csvStream = csv.createStream(options);
exports.handler = async (event) => {
    const response = {
        statusCode: 200,
        body: []
    };
    return new Promise((resolve, reject) => {
        return request('http://*****/*.csv').pipe(csvStream)
            .on('data', (d) => {
                response.body.push(d);
            }).on('end', () => {
                resolve(response);
            });
        
    }).then(nex_ => {
        return nex_;
    });
};

実行結果

Response:
{
  "statusCode": 200,
  "body": [
    {
      "c1": "178634",
      "c2": "0",
      "c3": "0"
    },

f:id:mojeld:20181030113145p:plain