(本文摘自http://hi.baidu.com/flex101/blog/item/f8a87bf7c21d0ed2f3d38518.html)
在AS中使用json其實(shí)并不是一個必須或是很好的選擇,因?yàn)锳S對xml的解析已經(jīng)很不錯了,但是為什么可以考慮使用
json呢,有以下幾點(diǎn):
json是介于單純的文本方式(如:
- firstName=Brett&lastName=McLaughlin&
email=brett@newInstance.com)和xml(<request><firstName>Brett&
lt;/firstName><lastName>McLaughlin<
/lastName><email>brett@newInstance.com</email><
/request>)中間的一種格式,他具有文本和xml的中性優(yōu)勢:數(shù)據(jù)量小和清晰的數(shù)據(jù)格式。
- json是JavaScript Object
Notation的簡寫,那么意思就是說他是來自于javascript的東西。因?yàn)楝F(xiàn)在ajax的流行,大部分網(wǎng)站會采用ajax的模式和構(gòu)架,那么
json會是一個數(shù)據(jù)傳輸?shù)氖走x(文本方式太簡單,要是大數(shù)據(jù)量的時候無法理解,xml的方式數(shù)據(jù)量大,在解析的時候會增加服務(wù)器負(fù)擔(dān)),那么要是一個網(wǎng)
站從ajax構(gòu)架的基礎(chǔ)上出一個flex/flash版的界面的時候使用json會最少地減少服務(wù)器端的程序改動。
- 服務(wù)器端現(xiàn)在有成熟的JSON解析代碼(因?yàn)镴SON運(yùn)用太廣泛了),那么在開發(fā)的時候也不用擔(dān)心服務(wù)器
端的解析。
下面就介紹一下adobe的官方的json類的用法
下面是教程,比較簡單:
1、服務(wù)器端來的json
怎么樣獲得服務(wù)器端的json我就不說了吧(就是通訊),那么得到的應(yīng)該是一個字符串,存入變量serverJSON,使用方式如下:
程序代碼
import json.*;
//json格式字符串 存入變量:serverJSON;
var serverJSON:String = '{ "programmers": [{ "firstName": "Brett",
"lastName":"McLaughlin", "email": "brett@newInstance.com" },{
"firstName": "Jason", "lastName":"Hunter", "email": "jason@servlets.com"
}, { "firstName": "Elliotte", "lastName":"Harold", "email":
"elharo@macfaq.com" }],"authors": [{ "firstName": "Isaac", "lastName":
"Asimov", "genre": "science fiction" },{ "firstName": "Tad", "lastName":
"Williams", "genre": "fantasy" },{ "firstName": "Frank", "lastName":
"Peretti", "genre": "christian fiction" }],"musicians": [{ "firstName":
"Eric", "lastName": "Clapton", "instrument": "guitar" },{ "firstName":
"Sergei", "lastName": "Rachmaninoff", "instrument": "piano" }]}'
//開始使用
var json:Object = new Object();
json = JSON.decode(serverJSON);
trace(json.programmers[0].firstName);//輸出:Brett;
json就是一個對象了,簡單吧。
不是吧這么簡單。其實(shí)轉(zhuǎn)變后就成為一個對象了,可以通過點(diǎn)語法來訪問這些值了。XML靠邊去。
2、本地對象做成JSON
你要是能自己拼出JSON字符串也可以,不過我們是在面向?qū)ο蟮氖澜绨?,那么我們都是對象啊,到時候?qū)ο笾苯泳涂梢詠碛昧恕?br>
舉一個例子:
程序代碼
import json.*;
var myObject:Object = new Object();
myObject.ab = "adfsdf";
myObject.cd = Math.random();
trace(JSON.encode( myObject
));//輸出:{"ab":"adfsdf","cd":0.0599129400216043}
這樣就可以給服務(wù)器了。
總結(jié):就兩個方法,JSON.decode(String),JSON.encode(Object),有這么簡單的方式實(shí)現(xiàn)傳輸量小,而且簡單的數(shù)據(jù)格
式,我們?yōu)槭裁催€不用呢?
其實(shí)XML自然也有他自己的強(qiáng)勢,當(dāng)一個結(jié)構(gòu)復(fù)雜的數(shù)據(jù)結(jié)構(gòu)出現(xiàn)的時候,這個時候JSON就很難搞定了,XML就是首選了。
posted on 2010-05-11 15:50
ACong 閱讀(2148)
評論(0) 編輯 收藏 引用