JSONをActionScriptで扱う

ActionScriptJSONを扱いたいので、調べてみるとas3corelibというライブラリがありました。これを使用すればJSON.decode(String)というように簡単にできます。

通信するアプリになるので、サンプルはここにおいておきます。ソースは以下の通り

<?xml version="1.0"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
        <mx:Script>
        <![CDATA[
                import mx.controls.Alert;
                import mx.collections.ArrayCollection;
                import mx.rpc.events.ResultEvent;
                import com.adobe.serialization.json.JSON;

                private function onJSONLoad(event:ResultEvent):void {
                        var text:String = new String(event.result);
                        var json:Array = JSON.decode(text);

                        var data:ArrayCollection = new ArrayCollection(json);
                        dg.dataProvider = data;
                }

                private function loadJSON():void {
                        jsonLoader.send();
                }
        ]]>
        </mx:Script>
        <mx:HTTPService id="jsonLoader" resultFormat="text" result="onJSONLoad(event)"
                url="./js/study_03.js"/>
        <mx:DataGrid id="dg" width="100%" height="100%" rowCount="5">
                <mx:columns>
                        <mx:DataGridColumn dataField="name" headerText="名前"/>
                        <mx:DataGridColumn dataField="age" headerText="年齢"/>
                </mx:columns>
        </mx:DataGrid>
        <mx:Button label="ロード" click="loadJSON();"/>
</mx:Application>

ちなみに、コンパイル時には下のように-include-librariesをつける必要がある。最初、-compiler.external-library-pathをつけてはまってしまった。ブラウザから起動するとなにも文句言ってくれないんだもの、、、

rascut -c "-include-libraries=corelib.swc" study_03_json.mxml