2009-10-31 7 views
11

J'ai essayé de faire fonctionner JSON avec AS3 pendant un moment maintenant, mais en vain. Je reçois toujours l'erreur suivante lorsque je récupère le JSON:actionscript 3 et JSON

TypeError: Erreur n ° 1034: La coercition de type a échoué: impossible de convertir l'objet @ 26331c41 en tableau.

J'ai essayé de changer le type de données de la variable "jsonData" en objet, ce qui corrige l'erreur, mais je ne suis pas entièrement sûr de la façon dont je peux analyser les données.

package 
{ 
    import flash.display.Sprite; 
    import flash.net.URLRequest; 
    import flash.net.URLLoader; 
    import flash.events.*; 
    import com.adobe.serialization.json.JSON; 

    public class DataGrab extends Sprite { 

     public function DataGrab() { 

     } 

     public function init(resource:String):void { 
      var loader:URLLoader = new URLLoader(); 
      var request:URLRequest = new URLRequest(resource); 
      loader.addEventListener(Event.COMPLETE, onComplete); 
      loader.load(request); 
     } 

     private function onComplete(e:Event):void { 
      var loader:URLLoader = URLLoader(e.target); 
      var jsonData:Array = JSON.decode(loader.data); 
      trace(jsonData); 
     } 


    } 
} 

Répondre

15

Vous étiez correct quand vous avez eu la variable jsonData comme Object. Pour parcourir toutes les propriétés de cette variable, vous pouvez simplement faire quelque chose comme ceci:

var jsonData:Object = JSON.decode(loader.data); 
for (var i:String in jsonData) 
{ 
    trace(i + ": " + jsonData[i]); 
} 

Si vous voulez vérifier si l'objet contenait une propriété spécifique, vous pouvez utiliser quelque chose comme:

var hasFooProperty:Boolean = jsonData.hasOwnProperty("fooProperty");