【发布时间】:2011-08-10 21:25:06
【问题描述】:
我正在努力通过 FlashVars 将 JSON 对象传递给 .swf 并在 AS3 中解码 JSON FlashVars,希望您能帮助我。
问题:
当我尝试解码 FlashVars 时,我得到一个 JSONParseError: Unexpected o encountered。
情况:
一个 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块中,所以我用trace(paramObj.toString());跟踪paramObj变量,得到[object Object]作为输出。
在我看来,JSON解码函数试图解码字符串[object Object]而不是对象本身,因此在“对象”的第一个“o”处抛出错误?
在作为 FlashVars 传递之前,我已经尝试从 PHP 中对 JSON 进行 urlencode(),在 http://code.google.com/p/as3corelib/issues/detail?id=119 上找到的建议并在没有 .toString() 的情况下执行了 JSON.decode(paramObj);,这会引发此错误:
1118: 值的隐式强制 具有静态类型 Object 的可能 不相关的字符串类型。
那么,如何正确地将 JSON 传递给 .swf 并在 AS3 中将其解码为对象?
提前感谢您的帮助
【问题讨论】:
-
你试过 JSON.encode() 代替吗? Decode 尝试将 JSON 格式的字符串解析为对象。 Encode 将 actionscript 对象转换为 JSON 格式的字符串。
标签: actionscript-3 json flashvars