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は、Webスペースの同じフォルダーにあります
次に、このAS3コードを使用してmain.asファイルのFlashVarsをデコードしようとします(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を別のtxtファイルからロードしたときに正常に機能しました。
var imagePathLoader:URLLoader = URLLoader(e.target);
imagePaths = JSON.decode(imagePathLoader.data);
エラーは明らかにtryブロックで発生するため、paramObj変数をトレースして出力としてtrace(paramObj.toString());
取得[object Object]
しました。[object Object]
JSONデコード関数は、オブジェクト自体ではなく文字列をデコードしようとしているため、「オブジェクト」の最初の「o」でエラーをスローしているように見えますか?
FlashVarsとして渡す前に、PHPからJSONをurlencode()しようとしました。提案は、http:JSON.decode(paramObj);
//code.google.com/p/as3corelib/issues/detail?id = 119にあり、 .toString()をスローせずに実行しました。このエラー:
1118:静的タイプObjectの値を、おそらく無関係なタイプのStringに強制的に強制します。
では、JSONを.swfに正しく渡し、AS3でオブジェクトにデコードするにはどうすればよいですか?
助けてくれてありがとう