2013-07-24 4 views
0

사용자가 책을 검색 할 수있는 flex 프로젝트 (플래시 빌더 4.5)를 만들고 있습니다. 나는 책을 얻을 수있는 순간 (Google 도서 API를 사용하여 메신저)하지만 JSON 형식으로받습니다.Json to Flex 4를 구문 분석하십시오.

대신 DataGrid에 몇 개의 필드를 표시 할 수 있도록 XML로 가져오고 싶습니다.

지금까지 as3corelib을 다운로드하고이를 내 프로젝트에 연결했습니다. 하지만 JSON 디코딩 방법을 알 수 없습니다.

<?xml version="1.0" encoding="utf-8"?> 
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009" 
        xmlns:s="library://ns.adobe.com/flex/spark" 
        xmlns:mx="library://ns.adobe.com/flex/mx" 
        creationComplete="application1_creationCompleteHandler(event)" 
        > 
<fx:Script> 
    <![CDATA[ 
     import com.adobe.serialization.json.JSON; 

     import mx.controls.Text; 
     import mx.events.FlexEvent; 
     import mx.rpc.events.ResultEvent; 
     [Bindable] private var api_request:String; 

     import com.adobe.serialization.json.JSONDecoder; 


     protected function application1_creationCompleteHandler(event:FlexEvent):void 
     { 
      // TODO Auto-generated method stub 
      btnSearch.addEventListener(MouseEvent.CLICK, Zoek); 
     } 

     protected function Zoek(event:MouseEvent):void 
     { 
      // TODO Auto-generated method stub 
      var api_url:String='https://www.googleapis.com/books/v1/volumes?q='; 
      var api_tag:String=search.text; 

      api_request= api_url + api_tag 

      GoogleBooks.send(); 


     } 

     protected function GoogleBooks_resultHandler(event:ResultEvent):void 
     { 

      txtResult.text=event.result as String; 
      //JSONDecoder(txtResult.text); 

     } 

    ]]> 
</fx:Script> 
<fx:Declarations> 
    <s:HTTPService id="GoogleBooks" url="{api_request}" resultFormat="text" result="GoogleBooks_resultHandler(event)" /> 


</fx:Declarations> 
<s:Button x="175" y="40" label="Button" id="btnSearch"/> 
<s:TextInput x="26" y="38" id="search"/> 

<s:TextArea id="txtResult" x="32" y="112" width="539" height="312"/> 
</s:WindowedApplication> 

JSON example 그래서 제 질문은 : 어떻게 내가 그래서 난 내 텍스트 영역에서 XML을 볼 수있는 JSON을 디코딩 할 수 있습니까?

답변

0

데이터 사용 방법에 따라 다릅니다. 당신은 단순히

var data:Object = JSON.decode(jsonString); 

을 할 수 또는 동일한 수행 할 JSONDecoder를 클래스를 사용할 수 있습니다

var decoder:JSONDecoder = new JSONDecoder(jsonString, jsonStringMatchesStandard); 
var data:Object = decoder.getValue(); 

을하거나 토큰 문자열 토큰을 디코딩 할 수 JSONDecoder를 사용할 수 :

var decoder:JSONDecoder = new JSONDecoder(jsonString, jsonStringMatchesStandard); 
var token:JSONToken = decoder.nextToken(); 

나는 도서관의 사용법에 대한 좋은 지침을 제공하는 출처의 의견을 살펴볼 것을 권한다.

https://github.com/mikechambers/as3corelib/tree/master/src/com/adobe/serialization/json

관련 문제