as3corelib не может декодировать строку JSON с помощью JSON.decode (); - PullRequest
0 голосов
/ 09 сентября 2011

Я работаю над расширением inDesign во flex, где я кодирую объект в JSON, а затем пытаюсь создать объект из строки JSON.

Класс, который я кодирую с помощью 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"}

Моя проблема заключается в расшифровке строки, я пытаюсь что-то вроде этого:

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 для объекта, аналогичного исходному объекту.

1 Ответ

0 голосов
/ 23 сентября 2011

Похоже, я могу ответить на свой вопрос:

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;
}

Я не мог декодировать непосредственно в закодированный объект, но путем декодирования в data: Object можно было воссоздать исходный объект.

...