2009-10-31 91 views
11

我一直在尝试让JSON与AS3一起工作一段时间,但无济于事。当我收到JSON时,我不断收到以下错误:actionscript 3和JSON

TypeError:错误#1034:类型强制失败:无法将Object @ 26331c41转换为数组。

我试着将变量“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");