- 2010年08月02日 (月)
- Tweet
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
ブックマークはこちらからどうぞ。