84

csvファイルをjsonに変換しようとしています。私は使っている 。

CSV の例:

a,b,c,d
1,2,3,4
5,6,7,8
...

必要な JSON:

{"a": 1,"b": 2,"c": 3,"d": 4},
{"a": 5,"b": 6,"c": 7,"d": 8},
...

node-csv パーサー ライブラリを試してみましたが、出力は配列のようで、期待どおりではありませんでした。

私は Node 0.8 と express.js を使用しており、これを簡単に達成する方法についての推奨事項を希望しています。

4

17 に答える 17

23

underscore.jsを使用してみることができます

最初にtoArray関数を使用して配列内の行を変換します。

var letters = _.toArray(a,b,c,d);
var numbers = _.toArray(1,2,3,4);

次に、オブジェクト関数を使用して配列を一緒にオブジェクト化します。

var json = _.object(letters, numbers);

それまでに、json var には次のようなものが含まれている必要があります。

{"a": 1,"b": 2,"c": 3,"d": 4}
于 2013-05-30T08:36:19.737 に答える
15

似たようなことをしなければならなかったので、これが役立つことを願っています。

// Node packages for file system
var fs = require('fs');
var path = require('path');


var filePath = path.join(__dirname, 'PATH_TO_CSV');
// Read CSV
var f = fs.readFileSync(filePath, {encoding: 'utf-8'}, 
    function(err){console.log(err);});

// Split on row
f = f.split("\n");

// Get first row for column headers
headers = f.shift().split(",");

var json = [];    
f.forEach(function(d){
    // Loop through each row
    tmp = {}
    row = d.split(",")
    for(var i = 0; i < headers.length; i++){
        tmp[headers[i]] = row[i];
    }
    // Add object to list
    json.push(tmp);
});

var outPath = path.join(__dirname, 'PATH_TO_JSON');
// Convert object to string, write json to file
fs.writeFileSync(outPath, JSON.stringify(json), 'utf8', 
    function(err){console.log(err);});
于 2015-04-24T04:00:27.730 に答える
6

ES6 の使用

const toJSON = csv => {
    const lines = csv.split('\n')
    const result = []
    const headers = lines[0].split(',')

    lines.map(l => {
        const obj = {}
        const line = l.split(',')

        headers.map((h, i) => {
            obj[h] = line[i]
        })

        result.push(obj)
    })

    return JSON.stringify(result)
}

const csv = `name,email,age
francis,francis@gmail.com,33
matty,mm@gmail.com,29`

const data = toJSON(csv)

console.log(data)

出力

// [{"name":"name","email":"email","age":"age"},{"name":"francis","email":"francis@gmail.com","age":"33"},{"name":"matty","email":"mm@gmail.com","age":"29"}]
于 2020-04-03T10:00:33.610 に答える
5

lodash の使用:

function csvToJson(csv) {
  const content = csv.split('\n');
  const header = content[0].split(',');
  return _.tail(content).map((row) => {
    return _.zipObject(header, row.split(','));
  });
}
于 2016-02-12T01:01:49.000 に答える
1

Node-ETLパッケージは、すべての BI 処理に十分です。

npm install node-etl; 

それで :

var ETL=require('node-etl');
var output=ETL.extract('./data.csv',{
              headers:["a","b","c","d"],
              ignore:(line,index)=>index!==0, //ignore first line
 });
于 2016-07-22T07:06:03.633 に答える
1

ステップ1:

ノード モジュールをインストールします: npm install csvtojson --save

ステップ2:

var Converter = require("csvtojson").Converter;

var converter = new Converter({});

converter.fromFile("./path-to-your-file.csv",function(err,result){

    if(err){
        console.log("Error");
        console.log(err);  
    } 
    var data = result;

    //to check json
    console.log(data);
});
于 2017-09-05T06:46:14.947 に答える
1

csv文字列をjson配列に変換するためにcsvtojsonライブラリを使用しました。JSONに変換するのに役立つさまざまな機能があります。
また、ファイルからの読み取りとファイル ストリーミングもサポートしています。

コンマ (,) またはその他の区切り文字を含む可能性のある csv を解析するときは注意してください。区切り文字を削除するには、こちらの回答を参照してください。

于 2017-06-09T12:34:44.087 に答える
0

私と友人は、このようなことを処理するための Web サービスを作成しました。

単一の RESTful 呼び出しで CSV を JSON に変換する方法については、Modifly.coを参照してください。

于 2013-10-25T06:10:34.927 に答える