Flex解析Json数组

来源:互联网 发布:算法的正确性 编辑:程序博客网 时间:2024/05/17 02:03

后台返回的Json:

{"indicator":[{"YEAR":"1980","DATA":"-11.97"},{"YEAR":"1981","DATA":"-5.642"},{"YEAR":"1982","DATA":"7.738"},{"YEAR":"1983","DATA":"7.966"},{"YEAR":"1984","DATA":"7.903"},{"YEAR":"1985","DATA":"9.667"},{"YEAR":"1986","DATA":"17.621"},{"YEAR":"1987","DATA":"10.311"},{"YEAR":"1988","DATA":"12.455"},{"YEAR":"1989","DATA":"6.525"},{"YEAR":"1990","DATA":"4.97"},{"YEAR":"1991","DATA":"5.476"},{"YEAR":"1992","DATA":"0.526"},{"YEAR":"1993","DATA":"-0.724"},{"YEAR":"1994","DATA":"1.277"},{"YEAR":"1995","DATA":"3.974"},{"YEAR":"1996","DATA":"3.319"},{"YEAR":"1997","DATA":"1.5"},{"YEAR":"1998","DATA":"6.669"},{"YEAR":"1999","DATA":"6.244"},{"YEAR":"2000","DATA":"1.866"},{"YEAR":"2001","DATA":"3.365"},{"YEAR":"2002","DATA":"2.648"},{"YEAR":"2003","DATA":"4.37"},{"YEAR":"2004","DATA":"6.038"},{"YEAR":"2005","DATA":"5.591"},{"YEAR":"2006","DATA":"6.501"},{"YEAR":"2007","DATA":"7.221"},{"YEAR":"2008","DATA":"0"},{"YEAR":"2009","DATA":"0"},{"YEAR":"2010","DATA":"0"}]}

Flex文件代码:

<?xml version="1.0" encoding="utf-8"?>

<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
               xmlns:s="library://ns.adobe.com/flex/spark"
               xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600" creationComplete="indicatorjson.send()">
    <fx:Declarations>
        <mx:HTTPService id="indicatorjson" url="http://localhost:8080/FlexJava/IndicatorInfoJson" resultFormat="array"  result="onJSONLoad(event)" />
    </fx:Declarations>
    <fx:Script>
        <![CDATA[
            import com.adobe.serialization.json.*;
            
            import mx.collections.ArrayCollection;
            import mx.controls.Alert;
            import mx.rpc.events.ResultEvent;
            import mx.rpc.xml.SimpleXMLDecoder;
            private var dp:ArrayCollection;
            private function onJSONLoad(event:ResultEvent):void {
                var response:String = indicatorjson.lastResult.toString();
                var container:Object = (JSON.decode(response) as Object);
                Alert.show(container.toString());
                dp = new ArrayCollection(container.indicator);
                linechart.dataProvider = dp;
                for(var i:int = 0; i< dp.length; i++) {
                    var o:Object = dp.getItemAt(i);
                    //Alert.show(o.YEAR);
                    //Alert.show(o.DATA);
                }
            }
        ]]>
    </fx:Script>
    <mx:Panel width="739" layout="absolute" height="252" x="26" y="9">
        <mx:LineChart id="linechart" height="100%" width="711"
        paddingLeft="5" paddingRight="5"
        showDataTips="true"  x="0" y="0">
        
        <mx:horizontalAxis>
            <mx:CategoryAxis categoryField="YEAR"/>
        </mx:horizontalAxis>
        
        <mx:series>
            <mx:LineSeries yField="DATA" form="curve" displayName="Profit"/>
        </mx:series>
        </mx:LineChart>
    </mx:Panel>
</s:Application>