`
yexin218
  • 浏览: 970803 次
  • 性别: Icon_minigender_1
  • 来自: 珠海
社区版块
存档分类
最新评论

Flex使用JSON格式与Java通信

    博客分类:
  • Flex
阅读更多

使用Flex,Java,Json更新Mysql数据【高级篇】 中我记得Flex界面中数据是使用一个JsonArray封装了JsonObject之后传给Java后台的。可是今天发现,如果你的数据只有一个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():void{
        	var stuFaculty:String = facultyxt.text;
        	var stuMajor:String = majortxt.text;
        	var stuInfo:Object = new Object;
        	stuInfo.faculty = stuFaculty;
        	stuInfo.major = stuMajor;
        	var stuStr:String = JSON.encode(stuInfo);
        	sendInfo.getStuMarks(stuStr);
        }
        public function showStuMark(event:ResultEvent):void{
        	note.text = "Success....";
        	var rawArray:Array;
        	var rawData:String = event.result as String;
        	rawArray = JSON.decode(rawData) as Array;
        	stuMarkDataArray = new ArrayCollection(rawArray);
        }
        public function getTotalMarks():void
        {
        	getTotal.getTotalMarks();
        	note.text="I am searching...";
        }
        public function showTotalMark(event:ResultEvent):void{
        	note.text = event.result as String;
    
        }
	]]>
</mx:Script>
<mx:RemoteObject id="sendInfo" destination="getStuMark" showBusyCursor="true" result="showStuMark(event)"/>
<mx:RemoteObject id="getTotal" destination="getTotalMark" showBusyCursor="true" result="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"/>
		<mx:TextInput x="72" y="64" id="majortxt"/>
		<mx:Label x="27" y="66" text="Major"/>
		<mx:Button x="27" y="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"/>
				<mx:DataGridColumn headerText="Chinese" dataField="chn"/>
				<mx:DataGridColumn headerText="English" dataField="eng"/>
			</mx:columns>
		</mx:DataGrid>
		<mx:Label x="10" y="227" width="304" id="note" height="24"/>
		<mx:Button x="192" y="94" label="总成绩" click="getTotalMarks()"/>
	</mx:Panel>
	
</mx:Application>

 后台JSonTestJava.java

package test;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
public class JsonTestJava {
  public String getStuMarks(String info){
	  String result = new String();
	  JSONObject jsonObject = JSONObject.fromObject(info);
	  String faculty = jsonObject.getString("faculty");
	  String major = jsonObject.getString("major");
	  
	   JSONArray stuMarksArray = new JSONArray();  
	     
	 if(faculty.equals("IT") && major.equals("SE")){
		for(int i=0;i<3;i++){
			JSONObject stuObj = new JSONObject(); 
			stuObj.put("math", 100-i*2);
			stuObj.put("eng", 80+2*i);
			stuObj.put("chn", 90-i);
			stuMarksArray.add(stuObj);
		}
	 }
	 result = stuMarksArray.toString();
	  return result;
  }
  public String getTotalMarks(){
	  JSONObject stuObj = new JSONObject(); 
	  stuObj.put("name", "leyond");
	  stuObj.put("mark","344");
	  return stuObj.toString();
  }
}

 使用的方法跟JSONArray差不多,只不过使用JsonArray的时候,需要先把每个jsonObject解析出来。所以比较方便的。但是现在有一个问题,如果你在后台传给的前台Flex中的是一个JSONObject的数据,请问如何在前台解析出来的。就是这里的代码该如何写呢:

        public function showTotalMark(event:ResultEvent):void{
        	var marks:Object= JSON.decode(event.result as String);
        	note.text = marks.name + marks.mark;    
        }

 这样就可以了,marks.name 和marks.mark就可以分别解析出name和mark。是不是很方便呢。当然如果你的数据很多,就需要用到JSAONArray了。这里就不多讲了。这个是这个例子的效果实例:

Reference: http://giantflyingsaucer.com/blog/?p=10&cpage=1

5
3
分享到:
评论
10 楼 yexin218 2009-04-09  
dongqdong 写道

你没有配置remoting-config.xml这个文件么?Java代码 &lt;mx:RemoteObject&nbsp;id="sendInfo"&nbsp;destination="getStuMark"&nbsp;showBusyCursor="true"&nbsp;result="showStuMark(event)"/&gt;&nbsp;&nbsp;&nbsp;&nbsp;&lt;mx:RemoteObject&nbsp;id="getTotal"&nbsp;destination="getTotalMark"&nbsp;showBusyCursor="true"&nbsp;result="showTotalMark(event)"/&gt;&nbsp;&nbsp;&nbsp;&nbsp;&lt;mx:RemoteObject id="sendInfo" destination="getStuMark" showBusyCursor="true" result="showStuMark(event)"/&gt; 
&lt;mx:RemoteObject id="getTotal" destination="getTotalMark" showBusyCursor="true" result="showTotalMark(event)"/&gt; 
这里要不配置 好像调用不了吧 呵呵

有啊,当然需要,见附件
9 楼 dongqdong 2009-04-09  
你没有配置remoting-config.xml这个文件么?
<mx:RemoteObject id="sendInfo" destination="getStuMark" showBusyCursor="true" result="showStuMark(event)"/>  
<mx:RemoteObject id="getTotal" destination="getTotalMark" showBusyCursor="true" result="showTotalMark(event)"/>  

这里要不配置 好像调用不了吧 呵呵
8 楼 whaosoft 2009-03-24  
呃 我 用了spring 所以就不用json了!~
7 楼 yexin218 2009-03-23  
bnmcvzx 写道

楼主太谦虚了,看楼主写的文章真的很好,以后还要多向楼主请教。

呵呵,客气~
6 楼 bnmcvzx 2009-03-23  
楼主太谦虚了,看楼主写的文章真的很好,以后还要多向楼主请教。
5 楼 yexin218 2009-03-22  
bnmcvzx 写道

用不用spring倒不是重要的 试用了amf协议就可以直接返回对象在flex中可以直接使用这个Object 直接o.属性,我感觉这里如果service方法不是为了跟其他地方通用json返回值的话是可以不用的
spring的整合很简单是固定的配置 我手里暂时也没有&nbsp;


AMF协议,这个我不会,很少用Flex来做事情,所以只会用这个,如果有资料,推荐下,有时间我也看看....Thx
4 楼 bnmcvzx 2009-03-22  
用不用spring倒不是重要的 试用了amf协议就可以直接返回对象在flex中可以直接使用这个Object 直接o.属性,我感觉这里如果service方法不是为了跟其他地方通用json返回值的话是可以不用的
spring的整合很简单是固定的配置 我手里暂时也没有 
3 楼 yexin218 2009-03-22  
bnmcvzx 写道

public function showTotalMark(event:ResultEvent):void{&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp; var marks:Object= JSON.decode(event.result as String);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp; note.text = marks.name + marks.mark;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
}&nbsp;
不知道这里为什么非要用json在来回转下
你在spring方法中直接返回一个对象&nbsp; mark
然后在flex这里直接mark.name mark.mark
这样不是更方便更有效率编码量也更少吗

还有请问你有spring和Blazeds这方面的资料吗,有时间我看看,还有你用过那个Flex框架叫com开头的好像.
2 楼 yexin218 2009-03-22  
bnmcvzx 写道

public function showTotalMark(event:ResultEvent):void{&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp; var marks:Object= JSON.decode(event.result as String);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp; note.text = marks.name + marks.mark;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
}&nbsp;
不知道这里为什么非要用json在来回转下
你在spring方法中直接返回一个对象&nbsp; mark
然后在flex这里直接mark.name mark.mark
这样不是更方便更有效率编码量也更少吗

哦,为什么你一定要用spring呢,好像Blazeds和spring有一个整合的吧。遗憾的是,我不会。方法很多,目的只有一个。有机会多请教spring啊
1 楼 bnmcvzx 2009-03-22  
public function showTotalMark(event:ResultEvent):void{  
    var marks:Object= JSON.decode(event.result as String);  
    note.text = marks.name + marks.mark;      

不知道这里为什么非要用json在来回转下
你在spring方法中直接返回一个对象  mark
然后在flex这里直接mark.name mark.mark
这样不是更方便更有效率编码量也更少吗

相关推荐

    Flex使用JSON格式与Java通信.docx

    ### Flex使用JSON格式与Java通信知识点详解 #### 一、背景介绍 随着互联网技术的发展,跨平台、跨语言之间的通信成为开发中常见的需求之一。在本文档中,我们将深入探讨如何利用Flex框架通过JSON(JavaScript ...

    flex使用 RemoteObject 与java进行json格式的数据交互

    本篇文章将深入探讨如何使用`RemoteObject`与Java进行JSON格式的数据交换,以便更好地理解和应用这一技术。 首先,`RemoteObject`是Flex框架中的一个关键组件,它允许Flex应用通过AMF(Action Message Format)协议...

    Flex与JSON及XML的互操作

    3. **互操作性**:Flex与JSON、XML之间的数据交换和处理能力,使得Flex能够灵活地与不同后端服务进行通信。 #### 深入理解Flex与JSON及XML的互操作 Flex的应用开发中,与JSON和XML的互操作是实现动态数据加载和...

    flex与java通信

    Flex与Java通信是Web开发中的一个重要领域,它允许前端用户界面(UI)通过Flex与后端Java服务进行数据交换和功能调用。Flex是一种基于ActionScript的富互联网应用程序(RIA)开发框架,而Java作为服务器端语言,提供...

    flex与java采用socket方式通信

    3. **数据序列化与反序列化**:由于Flex和Java可能使用不同的数据类型,因此在通信过程中通常需要将数据转换为通用格式,如JSON或XML。Flex可以使用ObjectSerializer进行序列化和反序列化,而Java则有多种选择,如...

    Flex_JSON_XML.zip_flex

    在Flex应用中,我们通常使用HTTP服务(如 BlazeDS 或 AMF)来与Java后端进行通信。BlazeDS是Adobe提供的一个开放源代码项目,它支持多种消息协议,包括AMF(Action Message Format)和HTTP/HTTPS。AMF是一种二进制...

    flex序列化json

    总之,Flex与Java等后端系统进行数据交互时,通过使用FlexJSON这样的库,可以方便地进行JSON的序列化和反序列化,实现数据的高效传输。理解并掌握这些工具和技巧,对于开发健壮的Flex应用程序至关重要。

    flex3 java 通信

    5. **Flash Remoting**:虽然不是Flex3与Java通信的首选方式,但Flash Remoting(通过NetConnection和NetStream类)仍然可用于与服务器端进行实时数据交换,不过它通常用于Flash Player而不是Flex。 6. **Security*...

    Flex与java通信 - 6.23

    Flex与Java通信是Web开发中的一个重要技术领域,它涉及到客户端与服务器端的交互。Flex是一种基于Adobe Flash Player或Adobe AIR运行时的富互联网应用程序(RIA)开发框架,主要用于创建动态、交互性强的用户界面。...

    Java_Flex,Java_Flex,Java_Flex

    3. HTTP服务:Flex可以与Java服务器通过HTTP进行通信,发送XML或JSON数据。这种通信方式相对简单,但效率较低,适合轻量级应用。 4. WebService:Java可以通过SOAP或RESTful WebService提供API,Flex客户端可以调用...

    flex与httpService通信(java)

    通过以上介绍,我们可以理解Flex如何使用`HTTPService`组件与Java后台进行通信,包括配置服务、发送请求和处理响应。在实际项目中,还需要考虑安全、性能优化以及错误处理等方面的问题。理解这一通信机制对于构建...

    Flex 与 java 低数据量通信

    总结起来,Flex3与Java的低数据量通信可以通过`HTTPService`组件来实现,选择不同的数据格式(如text、JSON或XML)取决于具体的应用需求和数据结构。在实际项目中,可能还需要考虑安全性、性能优化等因素。对于大型...

    flex与java的通信 Blazeds remoteObject

    Flex与Java的通信是Web应用程序开发中的一个重要环节,特别是在构建富互联网应用(RIA)时。Blazeds作为Adobe官方推出的中间件,为Flex与Java之间的数据交换提供了强大的支持。本篇将深入探讨Blazeds RemoteObject...

    Flex4 与Java通信,自己也在学习中!

    6. 异步与同步调用:Flex4与Java通信通常是异步的,这意味着客户端不会阻塞等待服务器响应,而是注册回调函数处理结果。这种方式提高了用户体验,但也增加了编程复杂性,需要处理错误和状态变化。 7. 错误处理:在...

    flex与java通信的小例子,适合初学者

    1. **Flex与Java通信的基础概念** - **Flex**:基于Adobe Flash Player或Adobe AIR运行的富客户端技术,用于创建交互式的、具有动态视觉效果的Web应用。 - **HTTPService**:Flex中的一个组件,允许客户端通过HTTP...

    BlazeDS实现flex与java通信

    在本文中,我们将深入探讨如何使用BlazeDS实现Flex与Java之间的通信,以及其核心功能和工作原理。 1. **Remoting服务** BlazeDS的Remoting服务允许Flex客户端直接调用Java后端的远程方法,仿佛这些方法是本地的。...

    创建Flex 与 Java 通信项目之Blazeds篇

    通过学习和实践创建Flex与Java通信项目,开发者可以构建出高效、可扩展的RIA应用,充分利用Flex的用户体验优势和Java的强大后端能力。同时,Blazeds提供的Remoting和Message Brokering机制为跨平台的分布式系统开发...

Global site tag (gtag.js) - Google Analytics