DataSchemaを使ってCSVテキストを解析するサンプル
YUI 3: DataSchema を使うと、任意の形式のデータを解析してJavaScriptのオブジェクトに変換することができます。以下はDataSchema.Textを使ってCSVをオブジェクトの配列に変換するサンプルです。
// CSV形式の文字列を解析するサンプル YUI().use('dataschema', function(Y) { // CSV形式の文字列を解析するためのスキーマ var schema = { resultDelimiter: "\n", // 行区切り fieldDelimiter: ",", // 列区切り resultFields: [ {key:"name"}, {key:"age"}] // 各列の名称 }; // 解析 var parsed = Y.DataSchema.Text.apply(schema, "mii, 1\n" + "tora, 0\n" + "shiro, 1\n" + "kuro, 2\n" ); // 結果を表示 var out = document.getElementById("out"); for ( var i=0,n=parsed.results.length; i<n;i++ ) { var item = parsed.results[i]; out.innerHTML += item.name + " : " + item.age + "<br/>"; } });
実行結果はこちら
テキスト以外にも、ArrayやXML,JSONにも対応しているとのこと。
フィールドの型を指定する。
スキーマの「resultFields」でparserを指定することで、フィールドの値を任意の型に変換できます。以下は組み込みの「DataType.Number」を使って値を数値として読み込む例です。
// 組み込みのparserを使うにはdatatypeモジュールも必要。 YUI().use( 'datatype', 'dataschema', function(Y) { var schema = { resultDelimiter: "\n", fieldDelimiter: ",", resultFields: [ {key:"name"}, // parserを指定して、2つめのカラムを数値として解析する {key:"age", parser : Y.DataType.Number.parse} ] }; // 解析 var parsed = Y.DataSchema.Text.apply(schema, "mii, 1\n" + "tora, 0\n" + "shiro, 1\n" + "kuro, 2\n" ); // 結果を表示 var out = document.getElementById("out"); for ( var i=0,n=parsed.results.length; i<n;i++ ) { var item = parsed.results[i]; out.innerHTML += item.name + " [" + (typeof item.name) + "] : " + item.age + " [" + (typeof item.age) + "]<br/>"; } });