2

ファイルをダウンロードし、JSON形式を期待してデコードするアプリがあります。形式に問題がなければ、すべてうまくいきます。意図的にjsonファイルを混乱させた場合、フラッシュはフォーマットエラーを報告し、アプリを停止します。エラーを処理する方法はありますか?

コード:

import flash.display.Sprite;
import flash.events.Event;
import flash.net.URLLoader;
import flash.net.URLRequest;

import com.adobe.serialization.json.JSON;


public class Main extends Sprite 
{

    private var _jsonPath:String = "json_example.txt";

    public function Main():void 
    {
        if (stage) init();
        else addEventListener(Event.ADDED_TO_STAGE, init);
    }

    private function init(e:Event = null):void 
    {
        removeEventListener(Event.ADDED_TO_STAGE, init);

        var loader:URLLoader = new URLLoader();
        var request:URLRequest = new URLRequest();
        request.url = _jsonPath;
        loader.addEventListener(Event.COMPLETE, onLoaderComplete);
        loader.load(request);
    }


    private function onLoaderComplete(e:Event):void 
    {
        var loader:URLLoader = URLLoader(e.target);
            var jsonArray:Array = JSON.decode(loader.data);
  }

私の問題は最後にあることがわかりvar jsonArray:Array = JSON.decode(loader.data);ます。それが失敗した場合、コードでどのように処理できますか?

4

2 に答える 2

7

try.. catch... を使用します。

import com.adobe.serialization.json.JSONParseError;

try
{
var jsonArray:Array = JSON.decode(loader.data);
}
catch ( e:JSONParseError )
{
    //do something
    trace(e);
}
finally
{
}

このソリューションは as3corelib ( http://as3corelib.googlecode.com/ ) を使用します。JSON.parse() を使用する場合は、JayC からの回答を確認してください。

于 2013-02-16T23:38:31.260 に答える
3

Actionscript は、try/catch をサポートしています。http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/JSON.htmlによるとparse、on エラーがスローTypeErrorされます。だから、それは次のように見えます

try
{
    var jsonArray:Array = JSON.parse(loader.data);
}
catch ( e:TypeError )
{
    //do something
}
catch (e: SomethingOtherError)  //not being literal here, just showing 
//you can catch more than one type of exception
{

}
finally
{
    //finally always works, even if the exception is not caught above
}

(編集)

上記のコードはあなたを必要としないはずです import com.adobe.serialization.json.JSON;

JSONParseError Thorsten の言及は、JSONDecoder を使用して https://github.com/mikechambers/as3corelib/blob/master/src/comを逆シリアル化するmixpanel ライブラリas3corelib ライブラリhttps://github.com/mikechambers/as3corelib/からのもののようです/adobe/serialization/json/JSONDecoder.as

ただし、なんらかの理由で as3corelib ライブラリを引き続き使用したい場合は、Thorsten のコードを機能させるために必要なのは (IIRC) だけですimport com.adobe.serialization.json.JSONParseError;

于 2013-02-16T23:49:25.120 に答える