2009-10-31 15 views
11

Ho cercato di far funzionare JSON con AS3 per un po 'di tempo, ma inutilmente. Continuo ad ottenere il seguente errore quando ottengo il JSON indietro:actionscript 3 e JSON

TypeError: Errore # 1034: Tipo Coercion failed: impossibile convertire Object @ 26331c41 in Array.

Ho provato a cambiare il tipo di dati della variabile "jsonData" per oggetto, che corregge l'errore, ma non sono del tutto sicuro di come posso analizzare i dati.

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); 
     } 


    } 
} 

risposta

15

Eri corretto quando si aveva la variabile jsonData come Object. Per scorrere tutte le proprietà di quella variabile si può solo fare qualcosa di simile:

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

Se si voleva verificare se l'oggetto contiene una proprietà specifica si potrebbe usare qualcosa come:

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