浅谈Actionscirpt中的JSON

                                    


    JSON是一个轻量级的数据交换格式。为什么说他轻量级?对比下xml就知道了。在as3中,我们常用到一个开源库as3corelib中的JSON类库,github地址在这:https://github.com/mikechambers/as3corelib

    JSON类里面有2个静态方法:encode、decode,前者编码,后者解码。

    编码指的是:将as3中的对象转化成json字符串

    解码指的是:将json字符串转化成as3的对象。

    编码和解码中的as3对象包括了字符串String、数字Number、布尔值Boolean、数组Array,对象Object等对象。

    废话不多说,看下面例子大家就很清楚as3中json的简单使用。

    主类Main:

package 
{
	import flash.display.Sprite;
	import flash.events.Event;
	import com.adobe.serialization.json.JSON;
	/**
	 * ...
	 * @author Childhood
	 */
	public class Main extends Sprite 
	{
		private var enemy1:Enemy;
		private var enemy2:Enemy;
		public function Main():void 
		{
			if (stage) init();
			else addEventListener(Event.ADDED_TO_STAGE, init);
		}
		
		private function init(e:Event = null):void 
		{
			removeEventListener(Event.ADDED_TO_STAGE, init);
			
			//01.as3中string对象编码
			var name:String = "childhood";
			var encodeName:String = com.adobe.serialization.json.JSON.encode(name);
			trace(encodeName);     //"childhood"
			
			//02.as3中数值number、int等对象编码
			var myNumber:Number = 25.56;
			var encodeMyNumber:String = com.adobe.serialization.json.JSON.encode(myNumber);
			trace(encodeMyNumber); //25.56
			
			//03.as3中布尔值对象编码
			var sex:Boolean = false;
			var encodeSex:String = com.adobe.serialization.json.JSON.encode(sex);
			trace(encodeSex); //false
			trace(encodeSex == false);   //false
			trace(encodeSex == "false"); //true
			
			//04.as3中对object对象编码
			enemy1 = new Enemy(1, "剑圣");
			enemy2 = new Enemy(2, "先知");
			
			var enemyStr1:String = com.adobe.serialization.json.JSON.encode(enemy1);
			trace(enemyStr1);   //{"id":1,"name":"剑圣"}
			
			var enemyStr2:String = com.adobe.serialization.json.JSON.encode(enemy2);
			trace(enemyStr2);  //{"id":2,"name":"先知"}
			
			//05.as3中array对象编码
			var myArr:Array = [3, 2, [enemy1, enemy2]];
			var encodeMyArr:String = com.adobe.serialization.json.JSON.encode(myArr);
			trace(encodeMyArr);  //[3,2,[{"id":1,"name":"剑圣"},{"id":2,"name":"先知"}]]
		}
	}
	
}
Enemy类:


package  
{
	
	/**
	 * ...
	 * @author Childhood
	 */
	public class Enemy 
	{
		public var id:int;
		public var name:String;
		public function Enemy(id:int, name:String):void
		{
			this.id = id;
			this.name = name;
		}
	}

}
上面例子简单演示了encode的结果,那相信读者对decode也知道该如何做了。在和服务端通信的过程中,当收到服务端的json对象,可以用decode解码为as3对象,然后进行使用。这里就不举例了。


读者朋友如果对文章有疑议或者建议看法,非常高兴能看到你的评论:)

转载于:https://my.oschina.net/game007/blog/100804

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值