2009-10-31 2 views
11

Я пытался заставить JSON работать с AS3 некоторое время, но безрезультатно. Я получаю следующую ошибку, когда возвращаю JSON:actionscript 3 и JSON

ТипError: Ошибка # 1034: Ошибка типа Coercion: невозможно преобразовать Object @ 26331c41 в Array.

Я попытался изменить тип данных переменной jsonData на объект, который исправляет ошибку, но я не совсем уверен, как я могу анализировать данные.

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


    } 
} 

ответ

15

Вы были правы, когда вы имели переменную jsonData как Object. Для того, чтобы перебрать все свойства этой переменной можно просто сделать что-то вроде этого:

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

Если вы хотите, чтобы проверить, если объект содержит конкретное свойство можно использовать что-то вроде:

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