Flash Media Server вызывает страницу, которая возвращает данные JSON - PullRequest
2 голосов
/ 21 сентября 2009

Я очень новичок в разработке Flash.

У меня есть сайт asp.net mvc, на котором есть действие контроллера, возвращающее JSON.

У меня есть настройка Flash Media Server, которая должна вызывать это действие контроллера каждые 15 минут, чтобы получить текущее расписание. Я могу заставить FMS вызывать сайт (и каждые 15 минут без проблем), и сейчас я получаю JSON в виде строки, но мне нужно проанализировать его из строки в объекты, чтобы использовать возвращаемые данные.

Любые указатели или идеи будут очень приветствоваться.

Ответы [ 2 ]

0 голосов
/ 18 октября 2012

Я полагаю, вы используете вызов веб-службы из FMS для получения данных. В ActionScript 1, я думаю, вы должны быть в состоянии использовать eval (), чтобы получить объект, который вы затем можете запросить.

var callback = mWebService.NewGuid();
mWebService.onResult = function(resultString){
    var resultObject = eval(resultString);
    trace(resultObject.mProperty1);
}
0 голосов
/ 20 сентября 2011

У Майка Чамберса есть библиотека AS3 на github (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>

...