6

我想要做的是向这个 URL 发出一个 get 请求:http://api.beatport.com/catalog/3/most-popular,它应该返回一些 JSON,然后从中解析出某些信息。

我将如何在 Actionscript 3 中执行此操作?我更关心如何将数据提供给 JSON 解析器,而不是解析 JSON,因为似乎有很多关于解析 JSON 的问题。我想在 AS3 中执行此操作的原因是我设置了 3D Flash 可视化,我想获取这些数据,解析出相关位,然后在可视化中显示解析的位。

如果有更简单的方法可以用另一种语言来实现,我愿意接受除 AS3 之外可以轻松与 Flash 集成的任何其他方法。

4

3 回答 3

12
  1. 添加corelib.swc到您的库路径。

  2. 导入 JSON 库:import com.adobe.serialization.json.JSON;

  3. 使用如下代码调用您的服务:

    var request:URLRequest=new URLRequest();
    request.url=YOUR_ENDPOINT
    request.requestHeaders=[new URLRequestHeader("Content-Type", "application/json")];
    request.method=URLRequestMethod.GET;
    var loader:URLLoader=new URLLoader();
    loader.addEventListener(Event.COMPLETE, receive);
    loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, notAllowed);
    loader.addEventListener(IOErrorEvent.IO_ERROR, notFound);
    loader.load(request);
    
    protected function receive(event:Event):void
    {
         var myResults:Array=JSON.decode(event.target.data);
    }
    
  4. 用 解析结果JSON.decode(results)

as3corelib 在这里维护:https ://github.com/mikechambers/as3corelib#readme 。

于 2012-04-11T18:34:28.850 回答
11

或者,如果您使用 Flash Player 11 或 AIR 3.0 或更高版本,您可以使用内置 JSON 对象来解码您的 JSON。这是一个顶级对象,因此您甚至不需要导入任何东西,只需执行以下操作:

var decoded : Object = JSON.parse(loadedText);

请参阅:http ://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/JSON.html

于 2012-04-12T18:34:21.583 回答
3

我相信as3corelib有一个 JSON序列化器和反序列化器

您可以使用它们而不是重新发明轮子并重新编写解析逻辑。

于 2012-04-11T18:31:35.917 回答