今天发现,如果你的数据只有一个JsonObject,那么是否直接传JsonObject也可以呢?试试看:
<?xml?version="1.0"?encoding"utf-8"?> <mx:Application xmlns:mx"http://www.adobe.com/2006/mxml"?layout"absolute"creationComplete"initApp()"<mx:Script> ????<![CDATA[ ????????import mx.rpc.events.ResultEvent;? ????????import mx.collections.ArrayCollection;? ????????import com.adobe.serialization.json.JSON; ????????[Bindable] ????????private var stuMarkDataArray:ArrayCollection; ???????? ????????private function initApp():void{ ????????????stuMarkDataArray?=?new ArrayCollection} ????????public function sendStuInfo{ ????????????var stuFaculty:String?=?facultyxt.text; ????????????var stuMajor:String?=?majortxt; ????????????var stuInfo:Object?=?new Object; ????????????stuInfo.faculty?=?stuFaculty.major?=?stuMajor; ????????????var stuStr:String?=?JSON.encode(stuInfo; ????????????sendInfo.getStuMarks(stuStr} ????????public function showStuMark(event:ResultEvent{ ????????????note.text?=?"Success...."; ????????????var rawArray:Array; ????????????var rawData:String?=?event.result as String; ????????????rawArray?.decode(rawData)?as Array; ????????????stuMarkDataArray?(rawArray} ????????public function getTotalMarks:void ????????{ ????????????getTotal.getTotalMarks; ????????????note"I am searching..."} ????????public function showTotalMark; ???? ????????} ????]/mx:<mx:RemoteObject id"sendInfo"?destination"getStuMark"?showBusyCursor"true"result"showStuMark(event)"/"getTotal"?destination"getTotalMark"?showBusyCursor"showTotalMark(event)"<mx:Panel x"39"?y"31"?width"346"?height"301"?layout"absolute"> ????????<mx:Label x"27"?y"25"?text"Faculty"<mx:TextInput x"72"?y"23"?id"facultyxt""64"?id"majortxt""66"?text"Major"<mx:Button x"92"?label"各科成绩"?width"109"?click"sendStuInfo()"<mx:DataGrid x"10"?y"140"?height"79"?width"304"?dataProvider"{stuMarkDataArray}"> ????????????<mx:columns> ????????????????<mx:DataGridColumn headerText"Math"?dataField"math""Chinese"?dataField"chn""English"?dataField"eng"/mx:columns/mx:DataGrid"227"?width"304"?id"note"?height"24""192"?y"94"?label"总成绩"?click"getTotalMarks()"/mx:Panel> ???? /mx:Application>
|
?后台JSonTestJava.java
package?test;
import?net.sf.JSONArray.JSONObjectpublic?class?JsonTestJava?{
??public?String?getStuMarks(String?info{
?????result?=?new?String;
???? JSONObject jsonObject?=?JSONObject.fromObject;
?????String?faculty?=?jsonObject.getString"faculty"String?major?"major";
?????
???? JSONArray stuMarksArray?new?JSONArray;?
?????
?????if(facultyequals"IT")?&&?major"SE"{
????????forint?i=0;i<3+{
????????????JSONObject stuObj?new?JSONObject;?
????????????stuObjput,?100-i*2;
????????????stuObj+2*i;
????????????stuMarksArrayadd(stuObj}
?????}
?????=?stuMarksArraytoString;
?????return?result;
??}
??String?getTotalMarks{
???? JSONObject stuObj?;?
???? stuObj"name""leyond";
???? stuObj"mark""344"return?stuObj}
}
?使用的方法跟JSONArray差不多,只不过使用JsonArray的时候,需要先把每个jsonObject解析出来。所以比较方便的。但是 现在有一个问题,如果你在后台传给的前台Flex中的是一个JSONObject的数据,请问如何在前台解析出来的。就是这里的代码该如何写呢:
public?function showTotalMarkevent:ResultEvent:void{
????????????var marks:Objectdecoderesult?as?text?=?marksname?+?marksmark;?
????????}
这样就可以了,marks.name 和marks.mark就可以分别解析出name和mark。是不是很方便呢。当然如果你的数据很多,就需要用到JSAONArray了。这里就不多讲了。