flash Builder JSON使用實例

flash Builder JSON 使用說明(轉載 houdinime

XML雖然強大但有人以爲xml不夠簡潔,編碼和解碼也有必定難度,因而21世紀初有人發明了JSON編碼,相比xml內容少而且容易閱讀,編碼解碼的難度也比xml簡單,所以迅速獲得普及成爲比xml更加受歡迎的編碼格式。JSON編碼來源於對數據結構的分析,全部數據結構均可以分爲3種基本數據組成單位:javascript

 

第一種類型是標量,也就是一個單獨的字符串或數字。php

第二種類型是序列,也就是若干個相關的數據按照必定順序並列在一塊兒,又叫作數組或列表html

第三種類型是映射,也就是一個名/值對,又稱做關聯數組(Object或字典(Dictionaryjava

 

幾乎全部語言都有這三種類型,as3也不例外,這是JSON成爲通用的編碼格式基礎,JSON提出以下規範:c++

 

1.並列的數據之間用逗號("")分隔。json

2.映射用冒號("")表示。c#

3.並列數據的集合(數組)用方括號("[]")表示。數組

4.映射的集合(對象)用大括號("{}")表示。數據結構

 

這符合像c++,javac#,javascript等經常使用語言的編寫習慣,as3也不例外,例如:工具

[

  {"姓名":"張三","性別":"","年紀":28},

  {"姓名":"四鳳","性別":,"年紀":24}

]

{
"backgroundPic":"aaaa",
"mapBounds":{"x":10,"y":20},
"hero":{這裏寫你的英雄數據},
"secnceVec":[{場景1數據},{場景2數據}...],
"monsterVec":[{怪物1數據},{怪物2數據}...],
"coinVec":[{金幣1數據},{金幣2數據}...],
"whoYourDadVec":[{無敵藥水1數據},{無敵藥水2數據}...],
"bouncyPointVec":[{彈簧點1數據},{彈簧點2數據}...]
}

 

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
package  gameElements.data
{
         import  flash.geom.Point;
 
         /**
          * 一個關卡包含的數據
          * */
         public  class  Ele_MissionData
         {
                 /**
                  * 背景圖片
                  * */
                 public  var  backgroundPic: String ;
                 /**
                  * 地圖大小
                  * */
                 public  var  mapBounds:Point;
                 /**
                  * 英雄數據
                  * */
                 public  var  hero:Ele_Hero_Data;
                 /**
                  * 場景數據
                  * */
                 public  var  secnceVec:Vector.<Ele_Secnce_Data>;
                 /**
                  * 怪物數據
                  * */
                 public  var  monsterVec:Vector.<Ele_Monster_Data>;
                 /**
                  * 金幣數據
                  * */
                 public  var  coinVec:Vector.<Ele_Coin_Data>;
                 /**
                  * 無敵藥水數據
                  * */
                 public  var  whoYourDadVec:Vector.<Ele_WhosYourDad_Data>;
                 /**
                  * 彈簧點數據
                  * */
                 public  var  bouncyPointVec:Vector.<Ele_BouncyPoint_Data>;
         }
}

 

 

 

 

這個結構和as3的字面值很是類似,所以使用as3編寫JSON有很是大的優點,目前as3中尚未內置JSON編碼,須要下載AdobeJSON工具包,下載完後就可使用JSON類編碼和解碼,JSON使用起來也很是簡單,它僅包括兩個靜態方法:JSON.encode(o:Object):StringJSON.decode( s:String, strict:Boolean = true ):*,endode()能夠將關聯數組、Array轉化爲字符串,decode()能夠將json格式的字符串轉化爲Objectstrict用於嚴格檢查,若是格式不標準會報JSONParseError的錯誤,下面是使用JSON編碼和解碼的例子:

 

ssss.php

?
1
2
3
[{ "firstName" : "Isaac" , "lastName" : "Asimov" , "genre" : "sciencefiction" },
{ "firstName" : "Tad" , "lastName" : "Williams" , "genre" : "fantasy" },
{ "firstName" : "Frank" , "lastName" : "Peretti" , "genre" : "christianfiction" }]

 

 [SWF] test_json.swf - 2,137,848 bytes after decompression
zhanzhihu
34
0,1,2,3
zhanzhihu
{"lastName":"Gate","firstName":"bill","com":"Microsoft"}
[object Object],[object Object],[object Object]
Isaac
Tad
Frank
[Unload SWF] test_json.swf

 

flex 4.6  默認添加了json:

 

    parse(text:String, reviver:Function = null):Object
[靜態] 接受 JSON 格式的字符串並返回表示該值的 ActionScript 對象。
JSON

 

 

  stringify(value:Object, replacer:* = null, space:* = null):String
[靜態] 返回 JSON 格式的字符串,用於表示 ActionScript 值。

 

 

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<?xml version= "1.0"  encoding= "utf-8" ?>
<s:WindowedApplication xmlns:fx= "http://ns.adobe.com/mxml/2009"
                        xmlns:s= "library://ns.adobe.com/flex/spark"
                        xmlns:mx= "library://ns.adobe.com/flex/mx"
                        creationComplete= "init()" >
     <fx:Script>
         <![CDATA[
             
             //import com.adobe.serialization.json.*;
             
             
             private  var  jsonStr: String
             private  var  jsonObj: Object ;         
             
             private  var  jsonObj2: Object ;
             private  var  jsonStr2: String ;
             
             private  var  jsonObj3: Object ;
             
             internal  function  init(): void {
                 jsonStr =  '{"name":"zhanzhihu","age":22,"gender":"male","arr":[0,1,2,3]}' ;
                 jsonObj = new  Object ();
                 //jsonObj = com.adobe.serialization.json.JSON.decode(jsonStr);
                 jsonObj = JSON.parse(jsonStr);
                 trace (jsonObj.name);
                 trace (jsonObj.age + 12 );
                 trace (jsonObj.arr);
                 trace (jsonObj[ "name" ]);
                 
                 jsonObj2 = new  Object ();
                 jsonObj2.firstName = "bill" ;
                 jsonObj2.lastName  = "Gate" ;    
                 jsonObj2.com       = "Microsoft" ;
                 //jsonStr2 = com.adobe.serialization.json.JSON.encode( jsonObj2 );
                 jsonStr2 = JSON.stringify(jsonObj2);
                 trace ( jsonStr2 );
                 
             }
 
             
         ]]>
     </fx:Script>
     <fx:Declarations>
         <!-- Place non-visual elements (e.g., services, value objects) here -->
     </fx:Declarations>
</s:WindowedApplication>
相關文章
相關標籤/搜索