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对象,然后进行使用。这里就不举例了。
读者朋友如果对文章有疑议或者建议看法,非常高兴能看到你的评论:)