sban : how to use json with as3corelib in flex

摘要:本文主要介绍as3corelib如何在flex中使用,以及如何在flex中使用json。
关键词:as3corelib,json,flex3
作者:sban

原文链接:http://blog.sban.com.cn/2008/08/30/how-to-use-json-with-as3corelib-in-flex.html

一、什么是as3corelib?

as3corelib是一个开源的,免费的ActionScript3.0 Library。所用开源协议是New BSD License.它是一些实用类的集合,包括一些如md5,sha等加密算法,还有json的编码与解码,一些webapi,还有若干实用的utils classses。它是一个开发as3应用不可或缺的library。

二、从哪里可以下载:

1,从这里下载最新发布的zip包。

2,用SVN工具从开发者的源码库里下载开发版本,地址:http://as3corelib.googlecode.com/svn/trunk/, svn工具可以选择RapidSVN。

三、如何编译、使用它?

用svn获取到最新的开发版本(截止到2008/08/30)至as3corelib目录,包括examples,docs,src,tests目 录。examples只包括一个json的例子。docs是用asdoc生成的,如果看源码,就不用看它了。tests是用flexunit写的测试。

学习使用as3corelib,最好是自己编码,而不是使用开发者已经编译好的swc文件。如果用flex builder 3创建library,把src文件添加进来之后,出现找不到flash.filesystem.File之类的错误,可按如下方法解决:

右键打开项目属性>Flex Library Compile>选择Include Adobe air libraries。flash.filesystem.File,与FileStream,FileMode均属于系统文件操作类,位于AIR Library中。

编译通过,一般会在bin目录生成一个swc文件。新建一个project,引用这个library。

四、JSON的使用

1,什么是JSON,JSON文件如何描述?

json是一种轻量级的文本数据描述格式,它太简单,还不足以称之为语言,但它很强大。json把相同内容的文本数据量降到最低,可谓是最轻量级, 它几乎没有一个字符是多余的。它把文本数据以一种最简单的格式描述了所有的复杂。在json的描述中,除了文本之外,标识符有 ”{}”,”[]“,”,”,”:”,其中“{}”表示是一个对象,“[]”表示是一个并列的数组,”,”表示并列对象的分隔,“:”表示名/值对,前面 为名称,后面为值。名/值对并非一定要成对出现,有时在一个数组中,便只有值,没有名了。json可以描述任何一个xml格式的文本数据。如下面这个 xml文本:


<posts>
    
<post>
        
<id>1</id>
        
<title>帖子1</title>
        
<content>内容1</content>
        
<author>sban</author>
    
</post>
    
<post>
        
<id>2</id>
        
<title>帖子2</title>
        
<content>内容2</content>
        
<author>sban</author>
    
</post>
</posts>

如上所示,posts是独立的一节,可视为对象用{}描述。其下有两个post,结构相同,可视为数组,用[]描述。再其下如1,可视为一个名值对。可以如下描述:

{posts:[
{
id:
1,
title:
"帖子1",
content:
"内容",
author:
"sban"
},
{
id:
2,
title:
"帖子2",
content:
"内容",
author:
"sban"
}
]};

真正传输中的json格式像比萨一般,结构没有那么明了。

2,如何使用as3corelib解码与编码json?

A,解码:JSON.decode(obj : Object) : String;
B,编码:JSON.encode(str : String) : Object;

注:使用之前别忘了import com.adobe.serialization.json.JSON;

decode方法的参数与encode的返回值均为Object类型,我们就可以把它理解为as3的原生的Object类型。看下面一段actionscript3.0代码:

var jsonObj : Object = {};
jsonObj.name 
= “sban”;
jsonObj.country 
= “china”;
jsonObj.city 
= “beijing”;
jsonObj.gameinfo 
= “跑跑卡丁车,传奇,诛仙”;

var ajax : Object 
= {};
ajax.javascript 
= “ajax”;

var airTechs : Array 
= ["flex","flash","silverlight",ajax];
var techniques : Array 
= ["ruby","php","dotnet",airTechs];
jsonObj.techniques 
= techniques;

sonStringText.text 
= JSON.encode(jsonObj);

这段代码在创建一个Object,给它添加了一些信息。它编码之后成为:

{”name”:”sban”,”techniques”: ["ruby","php","dotnet",["flex","flash","silverlight", {"javascript":"ajax"}]],”country”:”china”,”city”:”beijing”,”gameinfo”:”跑跑卡丁车,传奇,诛仙”}

从这个例子,可以看出并非所有都是名/值对。值有时可能是一个数组,如techniques的值,数组中也有可能再含有一个没有名称的数组,而所有名/值对的父标签都是{}。

JSON.decode的参数必须是符合json描述定义的文本。

JSON.encode效果展示:http://blog.sban.com.cn/flex/as3corelib/json_encode.html
JSON.decode效果展示:http://blog.sban.com.cn/flex/as3corelib/json.html
两者源码:http://blog.sban.com.cn/flex/as3corelib/srcview/index.html

sban 2008年8月30日于北京朝阳园

原文链接:http://blog.sban.com.cn/2008/08/30/how-to-use-json-with-as3corelib-in-flex.html

posted @ 2008-08-31 10:11 sban 阅读(162) 评论(0)  编辑 收藏 网摘 所属分类: flex