Je suis aux prises avec le fait de passer un objet JSON à un fichier .swf via FlashVars et de décoder le JSON FlashVars dans AS3 et j'espérais que vous pourriez m'aider.Decode JSON FlashVars dans AS3
Problème: Je reçois un JSONParseError: Unexpected o encountered
lorsque j'essaie de décoder les FlashVars.
Situation:
Une fonction PHP crée des chemins vers des images à partir d'un hachage et les met ensemble dans cet objet JSON:
[{"index":"0", "path":"image1", "ext":"jpg"},
{"index":"1", "path":"image2", "ext":"jpg"},
{"index":"2", "path":"image3", "ext":"jpg"}]
Ce JSON est passé à .SWF via Flashvars. Dans le HTML, j'ai ceci:
<param name="FlashVars" value='[{"index":"0", "path":"image1", "ext":"jpg"},{"index":"1", "path":"image2", "ext":"jpg"},{"index":"2", "path":"image3", "ext":"jpg"}]'/>
La fonction PHP et le .swf sont dans le même dossier sur l'espace Web
Ensuite, j'essaie de décoder les FlashVars dans mes main.as fichier avec ce code AS3 (as3corelib est importée):
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" contient l'objet JSON plus tard les chemins vers les images pourraient être construites. Pour autant que je compris JSON.decode retourne un Cela a bien fonctionné quand je chargé exactement le même JSON sur localhost à partir d'un fichier txt séparé avec:
var imagePathLoader:URLLoader = URLLoader(e.target);
imagePaths = JSON.decode(imagePathLoader.data);
L'erreur se produit évidemment dans le bloc d'essai, alors je retracé l'paramObj variable avec trace(paramObj.toString());
et obtenir [object Object]
en sortie. Il me semble que la fonction de décodage JSON essaie de décoder la chaîne [object Object]
plutôt que l'objet lui-même et renvoie donc une erreur au premier "o" de "objet"?
Je l'ai déjà essayé de urlencode() le JSON de PHP avant de passer en FlashVars, les suggestions trouvées sur http://code.google.com/p/as3corelib/issues/detail?id=119 et fait JSON.decode(paramObj);
sans .toString() qui jette cette erreur:
1118: Implicit coercion of a value with static type Object to a possibly unrelated type String.
Alors, comment puis-je passer le JSON correctement au fichier .swf et le décoder dans AS3 à un objet?
Merci à l'avance pour toute aide
Avez-vous essayé JSON.encode() à la place? Decode tente d'analyser une chaîne au format JSON dans un objet. Encode transforme un objet ActionScript en une chaîne au format JSON. – scriptocalypse