AS3オブジェクトをシリアライズできるライブラリXMLSerializerを公開

サーバーサイドへのデータの通信やローカル保存などを想定した場合の、データの扱いについて前回のブログ記事で紹介しました(ActionScriptでのデータ保存形式の比較(XML・JSON・ByteArray) )。XMLは汎用的に使われる頻度が多いですが、自前パーサーを作るのが難点という課題がありました。

そこでオブジェクトを半自動的にXMLにシリアライズできるXMLSerializer(XMLシリアライザー)というActionScript 3.0のライブラリを作ってみました。Spark projectにコミットしたので、利用したい方はそちらを参考くださいませ。

これを使うとFlashのデータで、配列や無名オブジェクト、カスタムクラス、Vector型などを完全に型情報をもったまま変換できます。ActionScript 3.0になってE4Xという方法でXMLの扱いが楽になりましたが、型情報をもたせるための自前パースがもっと楽になります。XMLを扱うFlashサイトでさらに便利になるはずです。

任意のオブジェクト

{hoge:"りんご"} →
<property name="hoge" type="String"><![CDATA[りんご]]></property>

{piyo:12} →
 <property name="piyo" type="Number">12</property>

{flag:true} →
 <property name="flag" type="Boolean">true</property>

配列

[22,33,44]

<property name="history" type="Array">
  <property index="0" type="Number">22</property>
  <property index="1" type="Number">33</property>
  <property index="2" type="Number">44</property>
</property>

Flash Player 10から搭載されたVector型についても変換・復元が可能です。

任意のクラス

任意のクラス(ビルドイン・カスタム)も変換・復元が可能です。任意のクラスの型指定を再現できるというのが非常に便利な点で、型指定ができるので未然のトラブルを防ぐことができます。

new Point(100,100)


<property type="flash.geom::Point">
  <property name="x" type="Number">100</property>
  <property name="y" type="Number">100</property>
</property>

ライブラリはas3corelibを拡張したもので、as3corelibと同等のテストをFlex Unit 4でチェックしたのでおそらく問題がないはず。何か不足している点や問題点などがありましたらTwitterなどでお気軽に声をかけてくださいませ。

あわせて確認しておきたい関連記事

投稿者 : 池田 泰延

BookMark

いかがでしたでしょうか、ブックマークはこちらからどうぞ。

このエントリーをはてなブックマークに追加