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