【问题标题】:as3corelib JSON parsing problemas3corelib JSON解析问题
【发布时间】:2011-07-14 09:57:25
【问题描述】:

我在 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] 而不是数组。

我做错了什么?

【问题讨论】:

    标签: json actionscript flexbuilder flash-builder


    【解决方案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;
    }
    

    围绕解码的尝试/捕捉也很好,因为您不知道 jsonStr 是否格式正确...

    干杯

    【讨论】:

    • 谢谢伙计。很抱歉延迟回复。
    • 如果这对您来说是正确的答案,请将其标记为。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-29
    • 2019-01-30
    • 1970-01-01
    相关资源
    最近更新 更多