我正在努力通過FlashVars將JSON對象傳遞給.swf並解碼AS3中的JSON FlashVars,並希望你能幫助我。解碼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函數和瑞士法郎都在同一個文件夾的網絡空間
然後我嘗試在我main.as的Flash變數解碼與此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」處引發錯誤?
我已經嘗試過通過爲FlashVars之前,來urlencode()從PHP的JSON,在http://code.google.com/p/as3corelib/issues/detail?id=119發現沒有的ToString()會拋出這個錯誤確實JSON.decode(paramObj);
建議:
1118: Implicit coercion of a value with static type Object to a possibly unrelated type String.
那麼,我該怎麼辦將JSON正確傳遞給.swf並在AS3中將其解碼爲一個對象?
預先感謝任何幫助
您是否嘗試JSON.encode()呢?解碼嘗試將JSON格式的字符串解析爲對象。 Encode將一個動作對象轉換爲JSON格式的字符串。 – scriptocalypse 2011-04-22 13:39:15