読者です 読者をやめる 読者になる 読者になる
無料で使えるシステムトレードフレームワーク「Jiji」 をリリースしました!

・OANDA Trade APIを利用した、オープンソースのシステムトレードフレームワークです。
・自分だけの取引アルゴリズムで、誰でも、いますぐ、かんたんに、自動取引を開始できます。

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/>";
  }      
});

実行結果はこちら