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속에 들어있는 데이터들을 확인해볼 수 있다.