Flex使用JSON格式与Java通信
在使用Flex,Java,Json更新Mysql数据【高级篇】 中我记得Flex界面中数据是使用一个JsonArray封装了JsonObject之后传给Java后台的。可是今天发现,如果你的数据只有一个JsonObject,那么是否直接传JsonObject也可以呢?试试看:
Xml代码 <>
<?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
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的数据,请问如何在前台解析出来的。就是这里的代码该如何写呢:
Js代码
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
分享到:
相关推荐
### Flex使用JSON格式与Java通信知识点详解 #### 一、背景介绍 随着互联网技术的发展,跨平台、跨语言之间的通信成为开发中常见的需求之一。在本文档中,我们将深入探讨如何利用Flex框架通过JSON(JavaScript ...
本篇文章将深入探讨如何使用`RemoteObject`与Java进行JSON格式的数据交换,以便更好地理解和应用这一技术。 首先,`RemoteObject`是Flex框架中的一个关键组件,它允许Flex应用通过AMF(Action Message Format)协议...
本文将深入探讨Flex框架如何利用这两种格式进行数据交互,同时通过实例展示如何在Flex应用中与Java服务器端进行通信。 #### Flex与JSON及XML:互操作性概述 Flex是一个强大的框架,允许开发者通过MXML语言(一种...
3. **互操作性**:Flex与JSON、XML之间的数据交换和处理能力,使得Flex能够灵活地与不同后端服务进行通信。 #### 深入理解Flex与JSON及XML的互操作 Flex的应用开发中,与JSON和XML的互操作是实现动态数据加载和...
Flex与Java通信是Web开发中的一个重要领域,它允许前端用户界面(UI)通过Flex与后端Java服务进行数据交换和功能调用。Flex是一种基于ActionScript的富互联网应用程序(RIA)开发框架,而Java作为服务器端语言,提供...
3. **数据序列化与反序列化**:由于Flex和Java可能使用不同的数据类型,因此在通信过程中通常需要将数据转换为通用格式,如JSON或XML。Flex可以使用ObjectSerializer进行序列化和反序列化,而Java则有多种选择,如...
在Flex应用中,我们通常使用HTTP服务(如 BlazeDS 或 AMF)来与Java后端进行通信。BlazeDS是Adobe提供的一个开放源代码项目,它支持多种消息协议,包括AMF(Action Message Format)和HTTP/HTTPS。AMF是一种二进制...
总之,Flex与Java等后端系统进行数据交互时,通过使用FlexJSON这样的库,可以方便地进行JSON的序列化和反序列化,实现数据的高效传输。理解并掌握这些工具和技巧,对于开发健壮的Flex应用程序至关重要。
5. **Flash Remoting**:虽然不是Flex3与Java通信的首选方式,但Flash Remoting(通过NetConnection和NetStream类)仍然可用于与服务器端进行实时数据交换,不过它通常用于Flash Player而不是Flex。 6. **Security*...
Flex与Java通信是Web开发中的一个重要技术领域,它涉及到客户端与服务器端的交互。Flex是一种基于Adobe Flash Player或Adobe AIR运行时的富互联网应用程序(RIA)开发框架,主要用于创建动态、交互性强的用户界面。...
3. HTTP服务:Flex可以与Java服务器通过HTTP进行通信,发送XML或JSON数据。这种通信方式相对简单,但效率较低,适合轻量级应用。 4. WebService:Java可以通过SOAP或RESTful WebService提供API,Flex客户端可以调用...
通过以上介绍,我们可以理解Flex如何使用`HTTPService`组件与Java后台进行通信,包括配置服务、发送请求和处理响应。在实际项目中,还需要考虑安全、性能优化以及错误处理等方面的问题。理解这一通信机制对于构建...
总结起来,Flex3与Java的低数据量通信可以通过`HTTPService`组件来实现,选择不同的数据格式(如text、JSON或XML)取决于具体的应用需求和数据结构。在实际项目中,可能还需要考虑安全性、性能优化等因素。对于大型...
Flex与Java的通信是Web应用程序开发中的一个重要环节,特别是在构建富互联网应用(RIA)时。Blazeds作为Adobe官方推出的中间件,为Flex与Java之间的数据交换提供了强大的支持。本篇将深入探讨Blazeds RemoteObject...
6. 异步与同步调用:Flex4与Java通信通常是异步的,这意味着客户端不会阻塞等待服务器响应,而是注册回调函数处理结果。这种方式提高了用户体验,但也增加了编程复杂性,需要处理错误和状态变化。 7. 错误处理:在...
1. **Flex与Java通信的基础概念** - **Flex**:基于Adobe Flash Player或Adobe AIR运行的富客户端技术,用于创建交互式的、具有动态视觉效果的Web应用。 - **HTTPService**:Flex中的一个组件,允许客户端通过HTTP...
在本文中,我们将深入探讨如何使用BlazeDS实现Flex与Java之间的通信,以及其核心功能和工作原理。 1. **Remoting服务** BlazeDS的Remoting服务允许Flex客户端直接调用Java后端的远程方法,仿佛这些方法是本地的。...
通过学习和实践创建Flex与Java通信项目,开发者可以构建出高效、可扩展的RIA应用,充分利用Flex的用户体验优势和Java的强大后端能力。同时,Blazeds提供的Remoting和Message Brokering机制为跨平台的分布式系统开发...