2011-07-14 133 views
1

我有以下兩個例程在Flash Builder:的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"}]'; 

將被解析並返回一個Array(如果你跟蹤它,將返回[object Object])。

,所以如果你不知道什麼是返回的數據,你可以只檢查是否

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也將是很好的,因爲你不知道,如果是jsonStr良好形成...

歡呼聲

+0

感謝隊友。抱歉,延遲的迴應。 –

+0

如果這是您的正確答案,請將其標記爲。謝謝 – pkyeck