[Actionscript] 외부 JSON데이터를 Object 데이터로 가져오기 on redgoose note

[Actionscript] 외부 JSON데이터를 Object 데이터로 가져오기

Nest: Development Category: ETC 2013-03-16

  • json은 자바스크립트 object와 array의 조합으로된 데이터 교환형식이다.
  • json개요 : 바로가기
  • 클래스 파일 다운로드 : as3corelib github

data.json

{
    "test1" : "test1_value"
    ,"test2" : "test2_value"
}

Timeline

var obj:Object = new Object();
var getSetting:GetJSON = new GetJSON('data.json');
getSetting.addEventListener(Event.COMPLETE, getSettingComplete);
private function getSettingComplete(e:Event):void
{
    obj = e.target.obj;
    getSetting.log();
}

GetJSON.as

package
{
    import com.adobe.serialization.json.*;
    import flash.display.Sprite;
    import flash.events.Event;
    import flash.net.*;
    public class GetJSON extends Sprite
    {
        public var obj = new Object();
        public function GetJSON(url:String)
        {
            var loader:URLLoader = new URLLoader();
            loader.dataFormat = URLLoaderDataFormat.TEXT;
            loader.addEventListener(Event.COMPLETE, onComplete);
            loader.load(new URLRequest(url));
        }
        private function onComplete(e:Event):void
        {
            var loader:URLLoader = URLLoader(e.target);
            obj = JSON.decode(loader.data);
            this.dispatchEvent(new Event(Event.COMPLETE));
        }
        // object contents check
        public function log():void
        {
            typeCheck(obj, 0);
        }
        // Type check
        private function typeCheck(data:*, depth:int):void
        {
            var str:String = '';
            for (var key in data) { 
                for (var i = 0; i < depth * 4; i++) { str = str + ' ';}
                trace('*' + key)
                if (typeof data[key] == 'Object' && data[key] is Array == false) {
                    trace(str + 'type: [' + typeof data[key] + '], key: [' + key + ']');
                    typeCheck(data[key], depth + 1);
                    continue;
                }
                trace(str + 'type: [' + typeof data[key] + '], key: [' + key + '], value: [' + data[key] + ']\n===============\n');
            }
        }
    }
}

result

// test1
type: String, key: [test1], value: test1_value
// test2
type: String, key: [test2], value: test2_value
  • 외부 json파일을 로드하여 로드가 완료되면 obj변수로 삽입한다. 모든 작업이 완료되면 호출한 곳에다 이벤트를 날려서 getSetting.obj 변수로 사용할 수 있다.
  • getSetting.log() 메서드를 이용하여 json속에 들어있는 데이터들을 확인해볼 수 있다.