Проблема анализа JSON as3corelib - PullRequest
1 голос
/ 14 июля 2011

У меня есть следующие две подпрограммы в Flash Builder:

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 Ответ

1 голос
/ 16 июля 2011

это

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"}]';

будет проанализирован и вернет массив (который, если вы проследите его, вернет [объект объекта]).

так что, если вы не знаете, какие данные возвращаются, вы можете просто проверить, если

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

было бы неплохо попробовать / перехватить декодирование, потому что вы не знаете, правильно ли сформирован jsonStr ...

ура

...