CSV文字列をJSONオブジェクトに変換

CSV文字列をJSONオブジェクトに変換するには、次のような方法で実装できます。

関数定義

JavaScript

var csvToJson = function(csvStr, userOptions) {
	if (typeof csvStr !== 'string') return null;

	var options = { header : 0, columnName : [], ignoreBlankLine : true };

	if (userOptions) {
		if (userOptions.header) options.header = userOptions.header;
		if (userOptions.columnName) options.columnName = userOptions.columnName;
	}

	var rows = csvStr.split('\n'),
	    json = [], line = [], row = '', data = {},
	    j, len2;

	for (var i = 0, len = rows.length; i < len; i++) {
		if (i + 1 <= options.header) continue;
		if (options.ignoreBlankLine && rows[i] === '') continue;

		line = rows[i].split(',');

		if (options.columnName.length > 0) {
			data = {};
			for (j = 0, len2 = options.columnName.length; j < len2; j++) {
				if (typeof line[j] !== 'undefined') {
					row = line[j];
					row = row.replace(/^"(.+)?"$/, '$1');
				} else {
					row = null;
				}

				data[options.columnName[j]] = row;
			}
			json.push(data);
		} else {
			json.push(line);
		}
	}

	return json;
};

使い方

引数

引数名 説明
第一引数
必須
csvStr string CSV形式の文字列
第二引数 userOptions Object 次のオプションが指定可能。
{
    header : 除外するヘッダーの行番号(数値)
    columnName : カラム名(配列)
    ignoreBlankLine : 空白行の除外(ブーリアン)
}

戻り値

変換されたオブジェクトを返します。

サンプルコード

JavaScript

var jsonObj = csvToJson(csvStr, {
	header     : 1,
	columnName : ['id', 'name', 'age']
});

console.log(jsonObj);

JavaScript逆引きリファレンス一覧へ戻る