在 Actionscript 中获取和解析 JSON

Posted

技术标签:

【中文标题】在 Actionscript 中获取和解析 JSON【英文标题】:Get and parse JSON in Actionscript 【发布时间】:2012-04-24 01:38:12 【问题描述】:

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

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

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

【问题讨论】:

【参考方案1】:

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

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

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

    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);
    
    

    JSON.decode(results)解析结果。

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

【讨论】:

实际上我的主要问题是我究竟如何获得 JSON 以便我可以解析它。 一旦 JSON 在该数组中,我该如何获取所需的文本。我只需要其中的特定数据。它包含有关 10 首不同歌曲的信息,对于每首歌曲,我想要歌曲的名称、艺术家、流派和唱片公司。我从未使用过 JSON 或 Actionscript。 JSON 解码为 AS3 中的对象。将有使用这种语法的关联数组:someProp:someValue, someOtherProp:someOtherValue,以及使用这种语法的常规数组:[someValue, someOtherValue]。您需要结合使用 for 循环来遍历结构。要遍历对象或关联数组的属性,请使用 for-in 循环:for (var prop:String in object) trace (object[prop]。要遍历数组,请使用 for-each 循环:for each ( var arrayItem:Object in someArray) trace (someItem.someProperty). Object.hasOwnProperty("someProp") 确认属性存在。 如果您选择一个单独的属性,您可以通过多种方式访问​​它:(假设是***对象):myResult[someProperty][someProperty][someProperty],或者如果其中一个节点是一个数组,你可以混合数组访问:myResult[someProperty][myIndex][someProperty]。比如,myResult["metadata"]["propPointsToArray"][3]["arrayItemProp"]. [object Object] 是 toString() 为 vanilla 对象打印的内容。如果您想遍历 props 本身,请在 for-in 循环中跟踪 prop。如果您遍历树顶部的属性值,object[prop] 很可能是另一个对象,而不是字符串、布尔值或数字。【参考方案2】:

或者,如果您使用 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

【讨论】:

【参考方案3】:

我相信 as3corelib 有一个 JSON serializer 和 deserializer

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

【讨论】:

以上是关于在 Actionscript 中获取和解析 JSON的主要内容,如果未能解决你的问题,请参考以下文章

在 ActionScript 2 中解析 JSON

无法在Future Builder中显示解析的JSON

如何在 Actionscript 中获取对象的属性列表?

ActionScript 3 错误 JSON 解析输入无效

spring boot常用的注解

jsoup教程