2009-10-31 15 views
11

Od jakiegoś czasu staram się, aby JSON pracował z AS3, ale bezskutecznie. Wciąż otrzymuję następujący błąd, gdy odzyskają JSON:actionscript 3 i JSON

TypeError: Błąd # 1034: Typ Przymus nie powiodło się: nie można przekonwertować obiektu @ 26331c41 na Array.

Próbowałem zmienić typ danych zmiennej "jsonData" na obiekt, który naprawia błąd, ale nie jestem całkowicie pewien, jak mogę analizować dane.

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


    } 
} 

Odpowiedz

15

Miałeś rację, kiedy trzeba było zmienną jsonData jako Object. Iterację wszystkich właściwości tej zmiennej można po prostu zrobić coś takiego:

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

Jeśli chcesz sprawdzić, czy obiekt zawiera specyficzną właściwość można użyć coś takiego:

var hasFooProperty:Boolean = jsonData.hasOwnProperty("fooProperty"); 
Powiązane problemy