2010-09-13 4 views
2

donc j'ai un lien JSON qui contient quelques nœuds (je ne sais pas comment vous les appelez en JSON) que j'ai besoin de mettre dans des tableaux en ActionScript, mais j'ai toujours du mal à essayer de tracer tous les contenu de noeud spécifique.Comment obtenir et envoyer des données JSON dans Arrays? [AS3]

J'ai trouvé un similar question here, mais the fix juste montré comment tracer le fichier entier JSON (qui apparaît dans la fenêtre de ma sortie comme [objet objet], [object Object], [object Object], ...)

premier noeud: {"captions":[{"content":"[hello world] ","startTime":0,"duration":4000}

Mon code:

private function onCaptionsComplete(event:Event):void 
    { 
     //var jsonObj:Object = JSON.decode(event.target.data); 
     //var englishCaptionsObject = jsonObj; 
     var englishCaptionsObject:Object = JSON.decode(cc_loader.data); 

     captionsContent.push(englishCaptionsObject); 
     trace("captionsContent = "+captionsContent); 

     for (var i:String in englishCaptionsObject) 
     { 
      trace(i + ": " +englishCaptionsObject[i]); 
      trace(i + ": " +englishCaptionsObject[i].content); 
      trace(i + ": " +englishCaptionsObject[i].content[i]); 
      trace(i + ": " +englishCaptionsObject[i].startTime[i]); 
     } 
    } 

Quand je lance ici sont mes traces ci-dessous:

captionsContent = [object Object] 
captions: [object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object] 
captions: undefined 
TypeError: Error #1010: A term is undefined and has no properties. 

Ce que je voudrais pouvoir faire est de mettre les données de contenu dans le tableau captionsContent, et le startingTime dans un tableau startingTime, de même que les données de durée.

Des conseils?

Répondre

2

Vous avez une erreur dans votre boucle que vous utilisez 3 fois la i variable pour accéder à trois differents Object (englishCaptionsObject, contenu et STARTTIME):

Modifier: i ont supposé que votre premier decode était déjà bonne, mais ce n'est pas le cas, vos légendes Array est dans les légendes champ de vos données JSON, le contenu et startTime ne sont pas Array s:

// get the captions array 
var captions:Array=englishCaptionsObject.captions; 

var cnt:int=0; 

// loop throug each caption 
for each (var caption:Object in captions) { 
    var content:String = caption.content; 
    trace(cnt+" "+content); 

    var startTime:Number = Number(caption.startTime); 
    trace(cnt+" "+startTime); 

    cnt++; 
} 
+0

dans la première trace que je reçois [objet objet], [objet OBJ ect], ... la deuxième trace est nulle et la troisième renvoie une erreur :(TypeError: Erreur # 1009: Impossible d'accéder à une propriété ou à une méthode d'une référence d'objet nul. Savez-vous s'il existe un moyen de voir le contenu de la chaîne dans la fenêtre de sortie de Flash? –

+0

@leon j'ai modifié la réponse que vous n'obteniez pas le bon champ – Patrick

+0

ah doux c'était tout! Merci :) –

Questions connexes