我对 Flash 开发非常陌生。
我有一个 asp.net mvc 站点,它有一个返回 JSON 的控制器操作。
我有一个 Flash Media Server 设置,需要每 15 分钟调用一次该控制器操作以获取当前计划。我可以让 FMS 调用该站点(每 15 分钟一次没问题),我现在将 JSON 作为字符串获取,但我需要将其从字符串解析为对象,以便使用返回的数据。
任何指示或想法都将受到欢迎。
我对 Flash 开发非常陌生。
我有一个 asp.net mvc 站点,它有一个返回 JSON 的控制器操作。
我有一个 Flash Media Server 设置,需要每 15 分钟调用一次该控制器操作以获取当前计划。我可以让 FMS 调用该站点(每 15 分钟一次没问题),我现在将 JSON 作为字符串获取,但我需要将其从字符串解析为对象,以便使用返回的数据。
任何指示或想法都将受到欢迎。
我猜您正在使用来自 FMS 的 Web 服务调用来获取数据。在 Actionscript 1 中,我认为您应该能够使用 eval() 来获取您可以查询的对象。
var callback = mWebService.NewGuid();
mWebService.onResult = function(resultString){
var resultObject = eval(resultString);
trace(resultObject.mProperty1);
}
Mike Chambers 在 github ( https://github.com/mikechambers/as3corelib ) 上有一个 AS3 库。其中一个库用于 JSON 序列化和解析。这是他在 Flex MXML 文档中的示例,但在 AS3 中是相同的(您基本上获取 JSON 数据,然后对其调用 JSON.decode() 以获取数组。):
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns="*"
layout="absolute"
creationComplete="service.send()" viewSourceURL="srcview/index.html">
<mx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
import mx.rpc.events.ResultEvent;
import com.adobe.serialization.json.JSON;
private function onJSONLoad(event:ResultEvent):void
{
var rawData:String = String(event.result);
var arr:Array = (JSON.decode(rawData) as Array);
var dp:ArrayCollection = new ArrayCollection(arr);
grid.dataProvider = dp;
}
]]>
</mx:Script>
<mx:HTTPService
id="service"
resultFormat="text"
url="http://weblogs.macromedia.com/mesh/mashedpotato.json"
result="onJSONLoad(event)" />
<mx:DataGrid id="grid" right="10" left="10" top="10" bottom="10">
<mx:columns>
<mx:DataGridColumn headerText="Service" dataField="src"/>
<mx:DataGridColumn headerText="Title" dataField="title"/>
</mx:columns>
</mx:DataGrid>