我正在努力通过 FlashVars 将 JSON 对象传递给 .swf 并在 AS3 中解码 JSON FlashVars,并希望您能帮助我。
问题: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 通过 Flashvars 传递给 .swf。在 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 位于网络空间的同一文件夹中
然后我尝试使用此 AS3 代码(已导入 as3corelib)解码 main.as 文件中的 FlashVars:
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 对象,以便稍后可以构建图像的路径。据我了解,当我从一个单独的 txt 文件在 localhost 上加载完全相同的 JSON 时,JSON.decode 返回一个 This 工作正常:
var imagePathLoader:URLLoader = URLLoader(e.target);
imagePaths = JSON.decode(imagePathLoader.data);
该错误显然发生在 try 块中,因此我使用并跟踪 paramObj 变量trace(paramObj.toString());
并将[object Object]
其作为输出。在我看来,JSON decode 函数试图解码字符串[object Object]
而不是对象本身,因此在“object”的第一个“o”处引发错误?
在作为 FlashVars 传递之前,我已经尝试从 PHP 中对 JSON 进行 urlencode(),在http://code.google.com/p/as3corelib/issues/detail?id=119上找到的建议并没有JSON.decode(paramObj);
抛出 .toString()这个错误:
1118:将具有静态类型 Object 的值隐式强制转换为可能不相关的 String 类型。
那么,如何将 JSON 正确传递给 .swf 并在 AS3 中将其解码为对象?
提前感谢您的帮助