2011-01-31 3 views
1

Я использую библиотеку JSON as3corelib и декодирую некоторый JSON из запроса URLLoader. Тем не менее, у меня возникают проблемы с JSON.decode бросает ошибку:AS3 JSON.decode throwing # 1009 error

TypeError: Error #1009: Cannot access a property or method of a null 

object reference. at com.adobe.serialization.json::JSONTokenizer/nextChar() at com.adobe.serialization.json::JSONTokenizer() at com.adobe.serialization.json::JSONDecoder() at com.adobe.serialization.json::JSON$/decode() at Main/drawMap() at flash.events::EventDispatcher/dispatchEventFunction() at flash.events::EventDispatcher/dispatchEvent() at flash.net::URLLoader/onComplete()

Мой код выглядит следующим образом:

private function storeAssets(e:Event):void 
{ 
    // returned variables from PHP call 
    var variables:URLVariables = new URLVariables(e.target.data); 
    assets = JSON.decode(variables.assets); 
} 

Я прошел мой вход JSON в валидаторов и он всегда возвращается, как действительно так Я действительно почесываю голову.

+0

Почему вы используете URLVariables? Если вы получаете данные json непосредственно с сервера, вы не должны использовать URLVariables, просто получите строку ответа и передайте ее прямо на JSON.decode – Ben

+0

Хорошая точка, но если я не понимаю, это не должно иметь никакого влияния по моей проблеме, правильно? – clexmond

+1

Вы можете отредактировать вопрос и добавить вывод 'trace (variables.assets);' – sberry

ответ

0

Ваше право на ввод e.target.data в URLVariables, согласно этому примеру: http://actionscriptexamples.com/2008/02/27/decoding-url-encoded-strings-in-a-flash-application-using-the-urlvariables-class-in-actionscript-30/

То, что я считаю, что происходит, что URLVariables декодирует всю строку в объект, таким образом, variables.assets не в формате JSON, потому что он уже преобразован. Также может быть, что переменные.ассеты не определены в возвращаемых данных.

Извлеките переменные и проанализируйте, является ли оно нулевым или нет в формате JSON.

Я бы использовал либо var variables:URLVariables = new URLVariables(e.target.data), либо assets = JSON.decode(e.target.data), но не в то же время.

Смежные вопросы