Flex解析JSON
首先需下载corelib,将解压后文件corelib.swc放入[Flex安装目录]\sdks\3.2.0\frameworks\libs;
1 jsp页面--转自网络代码(用于生成JSON数据)
<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" version="1.2"> <jsp:directive.page import="java.text.*"/>
<jsp:directive.page import="java.lang.*"/>
<jsp:directive.page contentType="text/json"/> [<jsp:scriptlet> <![CDATA[ double compa = 1000.0; double compb = 900.0; for (int i = 0; i<=30; i++) { compa += ( Math.random() * 100 ) - 50; compb += ( Math.random() * 100 ) - 50; if ( i > 0 ) out.print( "," ); ]]> </jsp:scriptlet> {"compa":<jsp:expression>compa</jsp:expression>,"compb":<jsp:expression>compb</jsp:expression>} <jsp:scriptlet> <![CDATA[ } ]]> </jsp:scriptlet>] </jsp:root>
2 MXML页面--转自网络代码
<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" creationComplete="jsonservice.send()">
<mx:Script> <![CDATA[ import mx.rpc.events.ResultEvent;
import com.adobe.serialization.json.JSONDecoder; private function onJSONResult( event:ResultEvent ) : void { var data:String = event.result.toString();
//可以直接通过以下数据测试
// var data:String = "[{\"uv\":3,\"pv\":24,\"date\":\"2011-07-20\"},{\"uv\":1,\"pv\":1,\"date\":\"2011-07-21\"},{\"uv\":13,\"pv\":44,\"date\":\"2011-07-22\"}]"; data = data.replace( /\s/g, '' ); var jd:JSONDecoder = new JSONDecoder( data ); dg.dataProvider =jd.getObject(); } ]]>
</mx:Script> <mx:HTTPService id="jsonservice" url="http://localhost:8080/testdemo/testJs.jsp"
resultFormat="text" result="onJSONResult(event)" /> <mx:Panel title="Stock Data " width="100% " height="100% "> <mx:DataGrid id="dg" width="100%" height="100%"> <mx:columns>
<mx:DataGridColumn dataField="compa" />
<mx:DataGridColumn dataField="compb" /> </mx:columns>
</mx:DataGrid> </mx:Panel>
</mx:Application>
网络中查到的源代码中,给出的.swc文件有误,JSONDecoder(param)只有一个参数,且获得结果的方法为.getObject(),而不是.getValue() .