2011-09-09 4 views
0

flex에서 inDesign Extension을 사용하여 객체를 JSON으로 인코딩 한 다음 나중에 JSON 문자열에서 객체를 만들려고합니다.as3corelib는 JSON.decode()로 JSON String을 디코딩 할 수 없습니다.

내가 JSOD.encode() 공용 클래스 ManualProductLink로 인코딩 오전 클래스 {

private var _productID:String; 
    private var _productName:String; 
    private var _productDescription:String; 
    private var _productPrice:String; 

    public function ManualProductLink(productID:String, productName:String, productDescription:String, productPrice:String):void { 
     this._productID = productID; 
     this._productName = productName; 
     this._productDescription = productDescription; 
     this._productPrice = productPrice; 
    } 

    public function get productID():String 
    { 
     return _productID; 
    } 

    public function set productID(value:String):void 
    { 
     _productID = value; 
    } 

    public function get productName():String 
    { 
     return _productName; 
    } 

    public function set productName(value:String):void 
    { 
     _productName = value; 
    } 

    public function get productDescription():String 
    { 
     return _productDescription; 
    } 

    public function set productDescription(value:String):void 
    { 
     _productDescription = value; 
    } 

    public function get productPrice():String 
    { 
     return _productPrice; 
    } 

    public function set productPrice(value:String):void 
    { 
     _productPrice = value; 
    } 

} 

이 내가

 /** 
    * Creates ManualProductLink, encodes to JSON and sends it to AsCppBridge 
    */ 
    public function manualProductLink(productID:String, productName:String, productDescription:String, productPrice:String):void { 
     var manualProductLinkl:ManualProductLink = new ManualProductLink(productID, productName, productDescription, productPrice); 
     bridge.saveManualProductLink(JSON.encode(manualProductLinkl)); 
    } 

결과 JSON 문자열은 객체를 인코딩하는 기능입니다 :

{"productName":"testName","productDescription":"testDescription","productID":"testID","productPrice":"100.00"} 

내 문제는 문자열 디코딩에 있습니다. 나는 tryi입니다. 다음과 같은 몇 가지 일을 NG :

public function getManualProductLinkJSON():ManualProductLink { 
     var jsonString:String = bridge.getManualProductLink() as String; 
     var data:ManualProductLink = JSON.decode(jsonString) as ManualProductLink; 

     var manualProductLink:ManualProductLink = new ManualProductLink(data.productID, data.productName, data.productDescription, data.productPrice); 

     return manualProductLink; 
    } 

그러나 다음과 같이 반환 된 객체에서 변수를 얻으려고 노력 :
var str:String = manualProductLink.productID; 

나를 위해 작동하지 않습니다.

JSON String을 원래 객체와 비슷한 객체로 디코딩하는 데 도움을 주시면 감사하겠습니다. 하지만, 데이터에 디코딩하여

public function getManualProductLinkJSON():ManualProductLink { 
    var jsonString:String = bridge.getManualProductLink() as String; 
    var data:Object = JSON.decode(jsonString); 

    var manualProductLink:ManualProductLink = new ManualProductLink(data.productID, data.productName, data.productDescription, data.productPrice); 

    return manualProductLink; 
} 

내가 인코딩 된 객체에 직접 디코딩 할 수 있습니다 : 원래 개체를 다시 할 수 있었다 오브젝트 나는 내 자신의 질문에 대답 할 수처럼

답변