Я пытаюсь передать JSON-объект в .swf через FlashVars и расшифровать JSON FlashVars в AS3 и надеялся, что вы мне поможете.
Проблема: при попытке получить JSONParseError: Unexpected o encountered
для декодирования FlashVars.
Ситуация:
Функция PHP создает пути к изображениям из хэша и объединяет их в этот объект JSON:
[{"index":"0", "path":"image1", "ext":"jpg"},
{"index":"1", "path":"image2", "ext":"jpg"},
{"index":"2", "path":"image3", "ext":"jpg"}]
Этот JSONперешел на .swf через Flashvars.В HTML у меня есть это:
<param name="FlashVars" value='[{"index":"0", "path":"image1", "ext":"jpg"},{"index":"1", "path":"image2", "ext":"jpg"},{"index":"2", "path":"image3", "ext":"jpg"}]'/>
Функция PHP и .swf находятся в одной папке на веб-пространстве
Затем я пытаюсь декодировать FlashVars в моем файле main.asс этим кодом AS3 (импортирован as3corelib):
var imagePaths:Object;
try {
var paramObj:Object = LoaderInfo(this.root.loaderInfo).parameters;
trace(paramObj.toString());
if(paramObj){
imagePaths = JSON.decode(paramObj.toString());
}
}
catch (error:Error)
{
trace(error.toString());
}
"imagePaths" содержит объект JSON, поэтому в дальнейшем пути к изображениям могут быть построены.Насколько я понял, JSON.decode возвращает. Это сработало нормально, когда я загрузил точно такой же JSON на localhost из отдельного txt-файла с помощью:
var imagePathLoader:URLLoader = URLLoader(e.target);
imagePaths = JSON.decode(imagePathLoader.data);
Ошибка явно возникает в блоке try, поэтому я проследилпеременная paramObj с trace(paramObj.toString());
и получением [object Object]
в качестве вывода.Мне кажется, что функция декодирования JSON пытается декодировать строку [object Object]
, а не сам объект, и поэтому выдает ошибку в первом «o» из «объекта»?
Я уже пытался urlencode () JSON из PHP перед передачей в виде FlashVars, предложения были найдены в http://code.google.com/p/as3corelib/issues/detail?id=119 и JSON.decode(paramObj);
без .toString (), которая выдает эту ошибку:
1118: неявное приведение значения со статическим типом Object к возможно не связанному типу String.
Итак, как правильно передать JSON в .swf и декодировать его вAS3 к объекту?
Заранее спасибо за любую помощь