У меня есть приложение, которое загружает файл, а затем расшифровывает его, ожидая формат JSON, когда формат в порядке, все идет хорошо. Если я намеренно испортил флэш-файл 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);
Как я могу справиться в моем коде, если это не удается?
, который дает мне: Сцена 1, «Конфигурация и загрузка данных», Кадр 1, Строка 37 \t 1046: Тип не был найден или не был константой времени компиляции: JSONParseError. – DomingoSL
JayC уже упомянул об этом, лучше использовать TypeError. Я использую as3corelib (http://as3corelib.googlecode.com), который определяет JSONParseError. – Thorsten
Привет от будущего! Это невероятно облагается налогом, когда нужно многократно пытаться использовать URLStream. Есть ли способ лучше? Самое лучшее, что я могу придумать, это сравнить скобки и проверять только тогда, когда каждый байт доступен. – quantomworks