2009-10-31 23 views
11

He intentado que JSON trabaje con AS3 desde hace un tiempo, pero fue en vano. Sigo recibiendo el siguiente error cuando recupero el JSON:actionscript 3 y JSON

TypeError: Error # 1034: Coerción de tipo fallida: no se puede convertir Object @ 26331c41 en Array.

He intentado cambiar el tipo de datos de la variable "jsonData" al objeto, lo que corrige el error, pero no estoy muy seguro de cómo puedo analizar los datos.

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


    } 
} 

Respuesta

15

usted tenía razón cuando tuvo la variable jsonData como Object. Para recorrer todas las propiedades de esa variable sólo podría hacer algo como esto:

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

Si quería comprobar si el objeto contiene una propiedad específica que podría utilizar algo como:

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