2009-09-21 25 views
2

我对Flash开发非常新颖。Flash Media Server调用返回JSON数据的页面

我有一个asp.net mvc网站,有一个控制器操作返回JSON。

我有一个Flash媒体服务器设置,需要每15分钟调用一次控制器动作来获取当前时间表。我可以让FMS调用该站点(并且每15分钟没有问题),现在我将JSON作为字符串获取,但是我需要将它从字符串解析为对象,以便使用返回的数据。

任何指针或想法将非常受欢迎。

回答

0

Mike Chambers在github上有一个AS3库(https://github.com/mikechambers/as3corelib)。其中一个库用于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> 

+0

Flash Media Server的至少当我问这个问题唯一支持的动作脚本版本1.我没有找到一个代码文件将处理JSON用于AS1,最终不需要在所有使用它。 – Solmead 2011-09-29 00:06:50

+1

Solmead,你想分享代码吗? – 2011-10-19 09:49:48

0

我想你正在使用来自FMS的web服务调用来获取数据。在Actionscript 1中,我认为你应该可以使用eval()来获得一个可以查询的对象。

var callback = mWebService.NewGuid(); 
mWebService.onResult = function(resultString){ 
    var resultObject = eval(resultString); 
    trace(resultObject.mProperty1); 
}