ActionScript 3和JSON

11

我已经尝试了一段时间将JSON与AS3结合起来使用,但一直无法成功。当我获取JSON返回值时,会出现以下错误:

TypeError: Error #1034: 类型转换失败:无法将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);
        }


    }
}
1个回答

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接