csv4j のように、きちんと RFC4810 に沿って処理する JavaScript / jQuery を書いている人が見当たらない。
csv4jのように、callback関数を書きたい時要求もあるだろう。
単純に split して配列にしている人ばかり。
見つけたのが、Google code にある jquery-csv
まず基本的なところから触ってみる。
文字列データをセパレータで区切って配列にする関数は、$.csv.toArray
書式は、
$.csv.toArray( data , [ options ] , [ function ] )
ほとんどのケースは、オプションも callback関数も省略して使うのであろう。
オプションは、、
{ separator: ',',
delimiter: '\n' }
のように、セパレータと行区切りデリミタを指定できる。
ただこのセパレータの指定時に癖があり、カンマを指定する場合はデリミタ記述を省略できるが、ハイフン '-' を指定すると、、
CSVDataError: Illegal State [Row:1][Col:1]
となってしまう。カンマ以外でこのデリミタを省略できない。
callback 関数を書くために、この options を書くわけだがいちいち、上のように書くのもセンスがない。ということなのか?
$.csv.toArray( data , { }, function(e, d){ ... } );
と、options を空で書けるようになっている。
callback 関数は、、、
関数の第2引数に、CSVパースしたデータが配列として渡される。
つまり、以下のサンプルのように処理するが、注意が必要なのは、
callback 関数を書くと、toArray 関数はリターン値を返さなくなる。。
$.csv.toArray(csvdata, {separator: '-', delimiter: '\n' }, function(e,d){
for(var i=0, len=d.length; i < len;i++){
console.log(d[i]);
}
});
使い方しだいであり、適度に利用すれば良いだろう。