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);