Flex 处理 Json 格式的返回数据

前序 :

首先,知道什么是json,知道json 的格式是什么样子的,其次,理解json 处理的需求是来自于Flex和Java 的Servlet通信不能通过对象的方式传递,因此需要json。最后,注意flex json 和Java的json处理需要引入不同的包 :

flex 中需要:as3corelib.swc

包的添加的位置,flex目录下还是ecplilse 项目路径下(但是这个不确定一定要放在此处)

Java 中需要:json-lib-2.2.2-jdk15.jar 和 jsoup-1.6.3.jar

我自己的放置位置 D:\software\zn,目的是为了我方便找,跟你没关系

案例:

Flex主要的代码:

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" creationComplete="init()" >
<mx:Script>
<![CDATA[
    import com.adobe.serialization.json.JSON;
private function init():void{
    var userid:int = 2;   
    requestSend(userid);   
} 
private function requestSend(userid:int):void{  
    http_service.addEventListener(ResultEvent.RESULT,http_service_resultHandler);  
    http_service.addEventListener(FaultEvent.FAULT,http_service_faultHandler);  
    http_service.url="http://localhost:8080/FlexProjectInformation/servlet/GetInformation?userid="+userid;  
    http_service.send(null);  
}  
protected function http_service_resultHandler(event:ResultEvent):void{  
    /** 处理为array  resultFormat="object" ***********************************/
    var objectStr:String=event.result as String;  
    var JsonObj:Object =com.adobe.serialization.json.JSON.decode(objectStr);//目的是组装json
    var arr:Array =JsonObj as Array; 
    for(var i=0 ;i<arr.length;i++){
    //处理json 中放置的东西
}
/** 处理为array  resultFormat="object" ***********************************/
/** 处理为arraycollection  resultFormat="object" ***********************************/
var objectStr:String=event.result as String;
var arr:Array = (JSON.decode(objectStr) as Array);
arrAC =new ArrayCollection(arr);
for(var i:int=0;i<arrAC.length;i++){  
    var o:Object = arrAC.getItemAt(i);  
    Alert.show(o["projecttable"],o["projectname"],o["dnt"]);  
} 
/** 处理为arraycollection  resultFormat="object" ***********************************/
/** arraycollection 显示***********************************/
<mx:DataGrid id="dg" dataProvider="{arrAC}">
    <mx:columns>
        <mx:DataGridColumn headerText="ID" dataField="projecttable"/>
        <mx:DataGridColumn headerText="姓名" dataField="projectname"/>
        <mx:DataGridColumn headerText="年龄" dataField="csq"/>
    </mx:columns>
</mx:DataGrid>
/** arraycollection 显示***********************************/
}  
protected function http_service_faultHandler(event:FaultEvent):void{  
    Alert.show("没有数据");
}  
]]>
</mx:Script>
<mx:HTTPService id="http_service" url="" method="GET" resultFormat="object"></mx:HTTPService>
</mx:Application>

Java Servlet主要的代码:

String userid = new String(request.getParameter("userid").getBytes("iso-8859-1"),"utf-8");
response.setHeader("Content-type", "text/html;charset=utf8");
response.setCharacterEncoding("utf8");  
PrintWriter out = response.getWriter();
//sonprojectArrayList 是一个ArrayList
try {
    JSONArray jsonArray = JSONArray.fromObject(sonprojectArrayList);
    /*int jsonArraysize =jsonArray.size();
    for (int j = 0; j < jsonArraysize; j++) {
        JSONObject json = JSONObject.fromObject(jsonArray.get(j));
        //out.print("json: "+json+"\n");
        out.print(json+",");//输出数据格式 {}
    }*/
    out.print(jsonArray);//输出数据格式[{},{},{},{},{},{}]
} catch (Exception e) {
    System.out.println("json :"+e.getMessage());
}
out.flush();  
out.close();

ps :这个流程中最重要的是

resultFormat="object" resultFormat 返回值的设置,默认是object,当然需要的话可以指定输入的格式array xml 等。换句话说Java这端的数据组织格式影响flex端数据处理的效率和方便性,最好的方式是能让俩端的数据处理"统一化",或者说是

/** 可以生成 Arraycollection ,arraycollection中放置的是array
var objectStr:String=event.result as String;
var arr:Array = (JSON.decode(objectStr) as Array);
var arrAC:ArrayCollection =new ArrayCollection(arr);
*/

java 和数据库进行连接检索相关信息时候,将数据库中需要的信息一次性拿出来到内存中进行处理map等,如果内存处理允许的话。

Flex 处理 Json 格式的返回数据

时间: 2024-10-14 05:18:25

Flex 处理 Json 格式的返回数据的相关文章

WebService 返回json格式和返回xml格式的数据

返回json格式 //using System.Web.Script.Services; [WebMethod] [ScriptMethod(UseHttpGet = true, ResponseFormat = ResponseFormat.Json)] public void HelloWorld() { Context.Response.Clear(); Context.Response.ContentType = "application/json"; Model.User.U

MariaDB 10.0.X中,动态列支持 JSON 格式来获取数据。

MariaDB 10.0.X中,动态列(Dynamic Columns),可以支持 JSON 格式来获取数据. 为了兼容传统SQL语法,MariaDB 10和MySQL5.7支持原生JSON格式,即关系型数据库和文档型NoSQL数据库集于一身. 使用说明: ###表结构 create table assets (   item_name varchar(32) primary key, -- A common attribute for all items   dynamic_cols  blo

pyhton读取json格式的气象数据

原文关于读取pm25.in气象数据的pyhton方法,以及浅析python json的应用 以pm25.in网站数据为例. 1.方法介绍 首先感谢pm25.in提供了优质的空气污染数据,为他们的辛勤劳动点个赞.是python3.3,windows系统,读取数据的时候用到了python的json处理的4个方法,很经典常用.所谓4个方法是: a)       json.loads() 输入string,返回json. b)       json.dumps() 输入json类型的数据,返回包含jso

AFNetWorking同时解析MsgPack和JSON等多种返回数据

最近项目遇到一种情况就是,为了减少流量,服务器的正确返回数据会用MsgPack格式进行返回,而错误数据或者网络错误则会以JSON数据格式返回. 首先标准的AFNetWorking是不能解析MsgPack数据格式的,需要加入相应的三方库, 而AFNetWorking的大牛作者为我们提供了两个库,可以很方便的加入进来: 如果用CocoaPod管理三方库, 在Podfile中加入以下两行,这样两个库就加入到工程中了: pod 'AFMsgPackSerialization', '~> 0.0.1' p

Django-choices字段值对应关系(性别)-MTV与MVC科普-Ajax发json格式与文件格式数据-contentType格式-Ajax搭配sweetalert实现删除确认弹窗-自定义分页器-批量插入-07

目录 models 字段补充 choices 参数/字段(用的很多) MTV与MVC模型 科普 Ajax 发送 GET.POST 请求的几种常见方式 用 Ajax 做一个小案例 准备工作 动手用 Ajax 实现效果 contentType 前后端传输数据编码格式 ajax 提交数据 ajax发 json 格式数据 ajax 传文件 序列化组件 利用 sweetalert 搭建页面(弹窗) 弹窗中文支持不太好,手动修改样式 页面数据没刷新的问题 自定义分页器 批量插入测试数据 bulk_creat

Ajax实现异步操作实例_针对JSON格式的请求数据

最近写了一篇ajax异步操作XML格式的,今天就写关于json格式的. 一.简单了解Json 1. JSON有两种表示结构,对象和数组. 1.1 对象: { key1:value1, key2:value2, ... } 1.2 数组 [ { key1:value1, key2:value2 }, { key3:value3, key4:value4 } ] 二.ajax如何利用json对象数据传递 $.ajax({ type: "post", url: "Hand/Ajax

@ResponseBody将集合数据转换为json格式并返回给客户端

spring-mvc.xml: <beans xmlns:mvc="http://www.springframework.org/schema/mvc" > <mvc:annotation-driven/> js代码: $.post("${pageContext.request.contextPath}/getJson",{},function(data){ alert(JSON.stringify(data)); }); java代码: @

后端返回Json格式的List数据,互相引用的问题

解决方法 return JSONObject.toJSONString(findNavs==null?new ArrayList<ProjectEx>() :findNavs,SerializerFeature.DisableCircularReferenceDetect); 重点是 : SerializerFeature.DisableCircularReferenceDetect 原文地址:https://www.cnblogs.com/sixgodbiao/p/12113902.html

MySQL树形查询结果封装成Json格式,返回给easyui treegrid

private String createTreeJson(List<SchedJob> list) {       JSONArray rootArray = new JSONArray();       for (int i=0; i<list.size(); i++) {        SchedJob resource = list.get(i);        System.out.println(resource.getJobid()+"--------"