Flex是用Flash播放器的编程语言ActionScript 3编写的。它和JavaScript很类似,但它没有eval方法。那么我们如何将JSON文本转换成ActionScript数据呢?幸运的是,免费的ActionScript 3核心库(
http://as3corelib.googlecode.com)包含了JSON解码器和JSON编码器。
列表7中的代码演示了JSONDecoder对象的用法:
<?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();
data = data.replace( /\s/g, '' );
var jd:JSONDecoder = new JSONDecoder( data );
dg.dataProvider = jd.getValue();
}
]]>
</mx:Script>
<mx:HTTPService id="jsonservice"
url="http://localhost:8080/jsp-examples/flexds/json.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><?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();
data = data.replace( /\s/g, '' );
var jd:JSONDecoder = new JSONDecoder( data );
dg.dataProvider = jd.getValue();
}
]]>
</mx:Script>
<mx:HTTPService id="jsonservice"
url="http://localhost:8080/jsp-examples/flexds/json.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>
因为服务器返回的是JSON文本,我们无法使用<mx:XML>标签来取得数据。因此我们用的 是<mx:HTTPService>标签。它的工作原理跟<mx:XML>很像。你需要给它一个服务的URL,并且告诉它结果的 格式(比如文本)以及HTTP服务发回响应数据时需要调用的ActionScript方法。
在这个例子中,我为结果处理方法指定的是在<mx:Script>标签中定义的onJSONResult方法。这个方法会去掉所有空格,并把 JSON文本传递给JSONDecoder对象。接着它将<mx:DataGrid>控件的dataProvider设置成 JSONDecoder返回的处理结果。
所有这些都是安全的,因为ActionScript不支持eval方法。JSONDecoder类是个简单状态机解析器,来实时地从文本构建出对象。最糟糕的情况可能是这样的过程会需要一段比较长的时间,如果JSON文本太大的话。
BTW,Flex4里面内置了JSON类库,无需再自行导入,可直接使用。
From http://www.infoq.com/cn/articles/flex-xml-json
其他参考:
http://blogold.chinaunix.net/u/21684/showart_1902294.html
http://yexin218.iteye.com/blog/207638
分享到:
相关推荐
json11是一个小型且易于使用的C++ JSON解析器和生成器,它提供了将JSON字符串转换为C++对象以及反之的过程。下面我们将详细讨论如何在MFC项目中集成json11库,并实现JSON数据的解析和序列化。 首先,你需要获取json...
在Web服务中,JSON常用于数据交换。当我们使用像Apache HttpClient或OkHttp这样的HTTP客户端库时,可以方便地发送和接收JSON数据。例如,发送一个包含JSON数据的POST请求: ```java CloseableHttpClient client ...
# NPMnpm install -D json-server json-server-auth# Yarnyarn add -D json-server json-server-auth 使用users集合创建db.json文件: { " users " : []} 启动JSON服务器(使用JSON服务器Auth作为中间件):...
json_fetcher 通过HTTP +缓存轻松使用JSON服务/数据的工具。 这种缓存JSON数据的方法可以使UI更加平滑。快取在低级别,缓存的数据由管理。 但是,数据将始终在第二步进行更新。 这就是为什么使用Stream代替Future<T>...
在这个“Google导航案例”中,我们将探讨如何在JSP中使用JSON来实现数据的交互。 首先,了解JSON的基本结构至关重要。JSON格式基于JavaScript语法,但它是独立于语言的。一个JSON对象以大括号{}包围,由键值对组成...
为什么使用 JSON 文件?如何使用 JSON 文件? JSON 文件是什么? JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,于 21 世纪初由 Douglas Crockford 提出。该格式旨在解决数据交换问题,提供了一...
本篇文章将深入探讨在Ajax中如何使用JSON来传输数据,以及涉及到的相关工具和源码。 首先,让我们理解JSON的基本概念。JSON是一种基于JavaScript语法的数据表示方式,它可以表示数组、对象、数值、字符串等基本数据...
在IT行业中,JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它以其简洁、易读、易于解析的特点被广泛应用于Web服务和客户端之间的数据交互。JSON是基于JavaScript的一个子集,但它是独立于语言的...
本文将深入探讨如何在MFC/VC++控制台应用程序中集成并使用JSON库,以便更好地处理JSON数据。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,广泛应用于服务器与客户端之间的数据传输。 首先,我们...
在这个“JSON库使用DEMO”中,我们将探讨如何在编程中利用JSON库进行数据的序列化和反序列化,以及相关的操作。 1. **JSON的基本结构**: JSON的数据结构主要由对象(Object)和数组(Array)组成。对象是键值对的...
2. Newtonsoft.Json库:除了.NET内置的Json处理,还可以使用流行的第三方库Newtonsoft.Json(也称为Json.NET)。它提供了更强大的功能和更高的性能,如`JsonConvert.DeserializeObject`和`JsonConvert....
在Web服务中,JSON被广泛用于服务器与客户端之间的数据交互,因为它的结构清晰、体积小且易于传输。 PHP(Hypertext Preprocessor)是一种流行的开源脚本语言,常用于服务器端编程,处理HTTP请求并返回响应。在与...
JSON-RPC(JavaScript Object Notation Remote Procedure Call)是一种轻量级的远程调用协议,它使用JSON(JavaScript Object Notation)作为数据交换格式。在Web服务和分布式系统中,JSON-RPC提供了一种简单的方式...
为了在Java程序中使用JSON,你需要引入一些特定的库,这些库提供了处理JSON对象的方法和功能。本资源包含的是"java使用Json所需要导入的所有jar包",确保了你在处理JSON数据时所需的全部依赖。 首先,最重要的库是`...
本文将详细解释如何在Java环境中使用JSON-RPC进行开发。 ### 概述 JSON-RPC的目标是提供一种简单、高效且跨平台的远程调用机制。它使用JSON作为数据交换格式,因为JSON易于解析,且在JavaScript和许多其他编程语言...
"Ajax 使用 JSON 向服务器发送数据" Ajax 使用 JSON 向服务器发送数据是将数据从客户端传输到服务器端的一种方式,使用 JSON 作为数据交换格式可以提高数据传输效率和简化数据处理过程。 在了解 Ajax 使用 JSON 向...
7. JSON高级用法:如使用JSON Schema验证JSON数据结构,以及如何有效地使用JSON进行大规模数据处理。 手册的版权信息指出,除非经过出版商的书面许可,否则不允许复制、存储或传输手册内容。此外,尽管编辑和作者...
通过对这些源代码的学习,开发者可以深入理解如何在Delphi中有效地使用JSON,从而提高数据处理效率,并与Web服务或其他使用JSON的应用程序进行无缝通信。通过实践和调试这些代码,你将能够掌握Delphi与JSON交互的...
JSON(JavaScript Object ...总之,JSON在现代Web服务和分布式系统中的重要性不言而喻。通过使用正确的Java JSON库,开发者可以有效地处理JSON数据,实现数据的序列化和反序列化,从而提升应用程序的交互性和可维护性。
Delphi是一种强大的面向对象的编程环境,而JSON(JavaScript Object Notation)则是一种轻量级的数据交换格式,广泛用于Web服务和应用程序之间的数据传输。在Delphi中,我们可以使用内置的System.JSON单元来处理JSON...