在Actionscript中获取并解析JSON

Sal*_*ran 6 flash json actionscript

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

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

如果有更简单的方法可以用另一种语言进行操作,那么除了AS3之外我还可以轻松地与Flash集成.

Mat*_*and 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);
    }
    
    Run Code Online (Sandbox Code Playgroud)
  4. 用结果解析结果JSON.decode(results).

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


ple*_*and 10

或者,如果您使用的是Flash Player 11或AIR 3.0或更高版本,则可以使用内置的JSON对象来解码您的JSON.这是一个顶级对象,所以你甚至不需要导入任何东西,只需:

var decoded : Object = JSON.parse(loadedText);
Run Code Online (Sandbox Code Playgroud)

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