Actionscript 3 在AS3中解码JSON FlashVars

Actionscript 3 在AS3中解码JSON FlashVars,actionscript-3,json,flashvars,Actionscript 3,Json,Flashvars,我正在努力通过FlashVars将JSON对象传递给.swf,并在AS3中解码JSON FlashVars,希望您能帮助我 问题: 我得到了一个JSONParseError:当我尝试解码FlashVars时遇到了意外的 情况: PHP函数从散列创建图像路径,并将它们放在这个JSON对象中: [{"index":"0", "path":"image1", "ext":"jpg"}, {"index":"1", "path":"image2", "ext":"jpg"}, {"index":"2",

我正在努力通过FlashVars将JSON对象传递给.swf,并在AS3中解码JSON FlashVars,希望您能帮助我

问题: 我得到了一个
JSONParseError:当我尝试解码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"}]'/>
“imagePaths”保存JSON对象,以便以后可以构造图像的路径。据我所知,当我从单独的txt文件在localhost上加载完全相同的JSON时,JSON.decode返回一个正确的结果,其中包含:

var imagePathLoader:URLLoader = URLLoader(e.target);
imagePaths = JSON.decode(imagePathLoader.data);
错误显然发生在try块中,因此我使用
trace(paramObj.toString())跟踪paramObj变量
并获取
[object object]
作为输出。 在我看来,JSON解码函数试图解码字符串
[object object]
,而不是对象本身,因此在“object”的第一个“o”处抛出错误

在作为FlashVars传递之前,我已经尝试从PHP对JSON进行urlencode()编码,在上找到了建议,并执行了
JSON.decode(paramObj)不带引发此错误的.toString():

1118:值的隐式强制 将静态类型对象 不相关的类型字符串

那么,如何将JSON正确地传递给.swf并在AS3中将其解码为对象呢

提前感谢您提供的任何帮助

表明FlashVar的正确用法是:

<PARAM NAME=FlashVars VALUE="varname=value">

root.loaderInfo.parameters.myvariable

或者如果你喜欢这种方式

var paramObj:Object = LoaderInfo(this.root.loaderInfo).parameters;
然后


paramObj.myvariable

谢谢您的回复。我昨天也发现了这一点,但在8小时内无法回答我自己的问题(新用户…)。我所做的: 在嵌入swf的HTML文件中:

<param name="FlashVars" value="var=urlencode([{"index":"0", "path":"image1", "ext":"jpg"},
{"index":"1", "path":"image2", "ext":"jpg"},
{"index":"2", "path":"image3", "ext":"jpg"}])"/>

然后像往常一样处理JSON对象..谢谢你的帮助

您尝试过JSON.encode()吗?Decode尝试将JSON格式的字符串解析为对象。Encode将actionscript对象转换为JSON格式的字符串。不知道是否是这种情况,但在提出问题时,我甚至不关心IE支持。。
<param name="FlashVars" value='myvariable=[{"index":"0", "path":"image1", "ext":"jpg"},{"index":"1", "path":"image2", "ext":"jpg"},{"index":"2", "path":"image3", "ext":"jpg"}]'/>
root.loaderInfo.parameters["myvariable"]
var paramObj:Object = LoaderInfo(this.root.loaderInfo).parameters;
paramObj["myvariable"]
<param name="FlashVars" value="var=urlencode([{"index":"0", "path":"image1", "ext":"jpg"},
{"index":"1", "path":"image2", "ext":"jpg"},
{"index":"2", "path":"image3", "ext":"jpg"}])"/>
var imagePaths:Object;    
var paramObj:Object = LoaderInfo(this.root.loaderInfo).parameters;
var myFlashVar:String;
var varName:String;
for (varName in paramObj) {
    myFlashVar = String(paramObj[varName]);
}
imagePaths = JSON.decode(myFlashVar);