본문 바로가기
FLEX 공유/FLEX

Flex 2.0에서 JSON 활용하기

by 반화넬 2007. 6. 1.
반응형

JSON(JavaScript Object Notation)은 XML에 비하여 가볍고 정형화된 형식으로, 최근에는 API 를 JSON 형식으로도 많은 업체들이 제공하고 있습니다. 여기서는 Flex 2.0 에서 JSON 을 사용하는 방법에 대하여 간략하게 소개할까 합니다.

1. JSON Component 다운로드 및 설정

  1. corelib ActionScript 3 library 다운로드
  2. 다운로드 받은 압축 파일 중에서 "corelib.swc" 파일을 component library 디렉토리에 복사한다. ( 본인의 경우는 Flex Builder 2.0 의 기본 Library Path C:\Program Files\Adobe\Flex Builder 2\Flex SDK 2\frameworks\libs 에 복사하였다. )
  3. Flex Builder 2.0 에서

    1 . 메뉴에서 Window > Open Perspective > Flex Development
    2.  다시 메뉴에서 Window > Show View > Navigator
    3.  사용하고자 하는 프로젝트를 선택 후에 마우스 오른쪽 버튼을 클릭 후 "Properties" 선택한다.
    4.  Flex Build Path > Library Path 을 선택 후에 아래 그림과 같이 corelib.swc 파일을 추가한다.

    JSON

2. 소스

JSONTest.mxml

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns="*" layout="absolute"
 creationComplete="initApp();" fontSize="11">

 <mx:Script>
  <![CDATA[
   import mx.collections.ArrayCollection;
   import mx.rpc.events.ResultEvent;
   import mx.rpc.events.FaultEvent;
   import mx.rpc.http.mxml.HTTPService;   
   import mx.controls.Alert;
   import com.adobe.serialization.json.JSON;
      
   public function initApp():void{
    var httpd:mx.rpc.http.mxml.HTTPService = new HTTPService();
    httpd.showBusyCursor = true;
    httpd.url = "j.php";
    httpd.addEventListener("result",resultHandler);
    httpd.addEventListener("fault",faultHandler);
    httpd.send();
  }
       
   public function resultHandler(event:ResultEvent):void{
    var rawData:String = String(event.result);
    var jObj:Object = JSON.decode(rawData);
    var dp:ArrayCollection = new ArrayCollection(jObj["DATA"]);
    title.text = jObj["INFO"]["TITLE"];
    date.text = jObj["INFO"]["DATE"];
    
    grid.dataProvider = dp;    
   }

   public function faultHandler(event:FaultEvent):void{
    mx.controls.Alert.show(event.fault.message);
   }
  ]]>
 </mx:Script>

 <mx:DataGrid id="grid" right="10" left="10" top="99" bottom="10">
  <mx:columns>
   <mx:DataGridColumn headerText="번호" dataField="num"/>
   <mx:DataGridColumn headerText="이름" dataField="name"/>
  </mx:columns>
 </mx:DataGrid>
 <mx:Form height="81" left="10" right="10" top="10">
  <mx:FormItem label="제목 :" width="573">
   <mx:Label id="title" text=""/>
  </mx:FormItem>
  <mx:FormItem label="시간 :" width="573">
   <mx:Label id="date" text=""/>
  </mx:FormItem>
 </mx:Form>
</mx:Application>

j.php

<?
header(sprintf("Content-type:text/plain;charset=utf-8"));

require "../../lib/JSON/JSON.php";

$json = new Services_JSON();
$rows = Array();

$rows["INFO"] = array("TITLE" => "JSON 사용 예", "DATE" => date("Y년 m월 d일"));
$rows["DATA"] = Array();

for($i=0;$i<10;$i++){
 array_push($rows["DATA"],array("num" => $i,"name" => "손상모"));
}
$output = $json->encode($rows);

print($output);

?>

 

3. 데모

4. 참고

 

출처 : Tong - BlueSky_07님의 Flex/Flash/Apollo/As통

반응형