我在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显示为[object Object]而不是数组。
我做错了什么?
答案 0 :(得分:1)
此
var jsonStr:String = '{"glossary": {"title": "example glossary","GlossDiv": {"title": "S"},"GlossSee": "markup"}}';
将解析并且JSON.decode返回一个Object,您可以访问如下属性:
var obj:* = JSON.decode(jsonStr);
trace(obj.glossary);
此
var jsonStr:String = '[{"title":"asd"},{"title":"asd"},{"title":"asd"},{"title":"asd"}]';
将被解析并返回一个数组(如果你跟踪它,将返回[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 around decode也不错,因为你不知道jsonStr是否格式良好......
欢呼声