2011-07-14 24 views
1

I持ってFlash Builderで、次の2つのルーチン:as3corelib JSONの解析問題

public function getData():void { 

    httpService = new HTTPService(); 
    httpService.url = "https://mongolab.com/api/1/databases/xxx/collections/system.users/?apiKey=xxx"; 
    httpService.resultFormat = HTTPService.RESULT_FORMAT_TEXT; 
    httpService.addEventListener(ResultEvent.RESULT, resultHandler); 
    httpService.send(); 
} 

public function resultHandler(event:ResultEvent):void { 

    var rawData:String = String(event.result); 
    var arr:Array = JSON.decode(rawData) as Array; 
    Debug.log(rawData); 
    Debug.log(arr); 

    httpService.removeEventListener(ResultEvent.RESULT, resultHandler); 
} 

RAWDATAは、JSONデータとして表示されますが、ARRは、[オブジェクトのオブジェクト]と表示されているのではなく配列。

私は間違っていますか?

答えて

1

この

var jsonStr:String = '{"glossary": {"title": "example glossary","GlossDiv": {"title": "S"},"GlossSee": "markup"}}'; 

が解析され、JSON.decodeはオブジェクトを返し、あなたがこのような属性にアクセスすることができます

var obj:* = JSON.decode(jsonStr); 
trace(obj.glossary); 

この

var jsonStr:String = '[{"title":"asd"},{"title":"asd"},{"title":"asd"},{"title":"asd"}]'; 

が解析され、配列を返します(トレースすると、[object Object]が返されます)。そう

あなたはjsonStrがよくあるかどうかわからないので、デコード周り

var result:* = JSON.decode(jsonStr); 
if (result.length != undefined) { 
    // array 
    var arr:Array = result as Array; 
} 
else { 
    // object 
    var obj:Object = result as Object; 
} 

のtry/catchでも、良いでしょう場合は、単にチェックすることができ返されたどのデータがわからない場合形成された...

歓声

+0

ありがとう。遅れて返信して申し訳ありません。 –

+0

これが正解であれば、plsはそのようにマークします。どうも – pkyeck