天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

JSON掃盲帖 JSON.as類教程

補(bǔ)充內(nèi)容:
如果json字符串是從html用FlashVars來(lái)傳遞參數(shù)時(shí)那么字符串中的第一個(gè)雙引號(hào)(包括雙引號(hào))以后的內(nèi)容就不會(huì)得到傳送. 而adobe的官方j(luò)son.as類包里解析josn對(duì)象中是少不了雙引號(hào)的. 所以搞了半天只后用個(gè)字符串替換函數(shù)啦!
方法看另一篇文章:
html傳帶雙引號(hào)的參數(shù)給flash解決方案
--------------------------------------------------------------------------------------
先看下面的轉(zhuǎn)載內(nèi)容吧! 前面這些是根據(jù)自己的需求的補(bǔ)充內(nèi)容:
--------------------------------------------------------------------------------------
昨天發(fā)了json的AS3解析類,從大家的跟帖上來(lái)看,好多人還是不知道這個(gè)東西的,特建一個(gè)掃盲貼。
其實(shí)在AS中使用json其實(shí)并不是一個(gè)必須或是很好的選擇,因?yàn)锳S對(duì)xml的解析已經(jīng)很不錯(cuò)了,但是為什么可以考慮使用json呢,有以下幾點(diǎn):
json是介于單純的文本方式(如:firstName=Brett&lastName=McLaughlin&email=brett@newInstance.com)和xml(<request><firstName>Brett</firstName><lastName>McLaughlin</lastName><email>brett@newInstance.com</email></request>)中間的一種格式,他具有文本和xml的中性優(yōu)勢(shì):數(shù)據(jù)量小和清晰的數(shù)據(jù)格式。
json是JavaScript Object Notation的簡(jiǎn)寫,那么意思就是說(shuō)他是來(lái)自于Javascript的東西。因?yàn)楝F(xiàn)在ajax的流行,大部分網(wǎng)站會(huì)采用ajax的模式和構(gòu)架,那么json會(huì)是一個(gè)數(shù)據(jù)傳輸?shù)氖走x(文本方式太簡(jiǎn)單,要是大數(shù)據(jù)量的時(shí)候無(wú)法理解,xml的方式數(shù)據(jù)量大,在解析的時(shí)候會(huì)增加服務(wù)器負(fù)擔(dān)),那么要是一個(gè)網(wǎng)站從ajax構(gòu)架的基礎(chǔ)上出一個(gè)flex/flash版的界面的時(shí)候使用json會(huì)最少地減少服務(wù)器端的程序改動(dòng)。
服務(wù)器端現(xiàn)在有成熟的JSON解析代碼(因?yàn)镴SON運(yùn)用太廣泛了),那么在開(kāi)發(fā)的時(shí)候也不用擔(dān)心服務(wù)器端的解析。
ps:我怎么只能想到上面三點(diǎn)啊,會(huì)不會(huì)理由太少了?
JSON 是什么?
簡(jiǎn)單 JSON 示例
按照最簡(jiǎn)單的形式,可以用下面這樣的 JSON 表示名稱/值對(duì):
復(fù)制代碼 代碼如下:
{ "firstName": "Brett" }

復(fù)制代碼這個(gè)示例非?;?,而且實(shí)際上比等效的純文本名稱/值對(duì)占用更多的空間: 復(fù)制代碼 代碼如下:
firstName=Brett

復(fù)制代碼但是,當(dāng)將多個(gè)名稱/值對(duì)串在一起時(shí),JSON 就會(huì)體現(xiàn)出它的價(jià)值了。首先,可以創(chuàng)建包含多個(gè)名稱/值對(duì)的記錄,比如:
復(fù)制代碼 代碼如下:
{ "firstName": "Brett", "lastName":"McLaughlin", "email": "brett@newInstance.com" }

復(fù)制代碼從語(yǔ)法方面來(lái)看,這與名稱/值對(duì)相比并沒(méi)有很大的優(yōu)勢(shì),但是在這種情況下 JSON 更容易使用,而且可讀性更好。例如,它明確地表示以上三個(gè)值都是同一記錄的一部分;花括號(hào)使這些值有了某種聯(lián)系。
值的數(shù)組
當(dāng)需要表示一組值時(shí),JSON 不但能夠提高可讀性,而且可以減少?gòu)?fù)雜性。例如,假設(shè)您希望表示一個(gè)人名列表。在 XML 中,需要許多開(kāi)始標(biāo)記和結(jié)束標(biāo)記;如果使用典型的名稱/值對(duì)(就像在本系列前面文章中看到的那種名稱/值對(duì)),那么必須建立一種專有的數(shù)據(jù)格式,或者將鍵名稱修改為 person1-firstName 這樣的形式。
如果使用 JSON,就只需將多個(gè)帶花括號(hào)的記錄分組在一起:
復(fù)制代碼 代碼如下:
{ "people": [
{ "firstName": "Brett", "lastName":"McLaughlin", "email": "brett@newInstance.com" },
{ "firstName": "Jason", "lastName":"Hunter", "email": "jason@servlets.com" },
{ "firstName": "Elliotte", "lastName":"Harold", "email": "elharo@macfaq.com" }
]}

復(fù)制代碼這不難理解。在這個(gè)示例中,只有一個(gè)名為 people 的變量,值是包含三個(gè)條目的數(shù)組,每個(gè)條目是一個(gè)人的記錄,其中包含名、姓和電子郵件地址。上面的示例演示如何用括號(hào)將記錄組合成一個(gè)值。當(dāng)然,可以使用相同的語(yǔ)法表示多個(gè)值(每個(gè)值包含多個(gè)記錄): { "programmers": [
復(fù)制代碼 代碼如下:
{ "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" }
]
}

復(fù)制代碼這里最值得注意的是,能夠表示多個(gè)值,每個(gè)值進(jìn)而包含多個(gè)值。但是還應(yīng)該注意,在不同的主條目(programmers、authors 和 musicians)之間,記錄中實(shí)際的名稱/值對(duì)可以不一樣。JSON 是完全動(dòng)態(tài)的,允許在 JSON 結(jié)構(gòu)的中間改變表示數(shù)據(jù)的方式。
在處理 JSON 格式的數(shù)據(jù)時(shí),沒(méi)有需要遵守的預(yù)定義的約束。所以,在同樣的數(shù)據(jù)結(jié)構(gòu)中,可以改變表示數(shù)據(jù)的方式,甚至可以以不同方式表示同一事物。
ps:以上例子都是來(lái)自http://www.ibm.com/developerworks/cn/web/wa-ajaxintro10/,掌握 Ajax,自己懶,看人家有就順便用了

當(dāng)當(dāng)當(dāng),我又回來(lái)了,上周忙這上班沒(méi)顧上寫用法,下面就介紹一下adobe的json類的用法。
上次發(fā)表的json類有問(wèn)題(http://bbs.actionscript3.cn/thread-1625-1-1.html),因?yàn)槲乙彩菑膭e人處下載的,誰(shuí)知道是一個(gè)半成品。望大家別生氣啊,建議管理員給刪除了!
這次是adobe的官方的類,我修改了一下包,這次就可以用了。
下面是教程,比較簡(jiǎn)單:
1、服務(wù)器端來(lái)的json
怎么樣獲得服務(wù)器端的json我就不說(shuō)了吧(就是通訊),那么得到的應(yīng)該是一個(gè)字符串,存入變量serverJSON,使用方式如下:

復(fù)制代碼 代碼如下:
import json.*;
var json:Object = new Object();
json = JSON.decode(serverJSON);


json就是一個(gè)對(duì)象了,簡(jiǎn)單吧。
舉一個(gè)例子:
上面的JSON的一段代碼:
復(fù)制代碼 代碼如下:
{ "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" }
]
}

存入變量:serverJSON
代碼:

復(fù)制代碼 代碼如下:
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 s:Object = JSON.decode(serverJSON);
//開(kāi)始使用
trace(s.programmers[0].firstName);//輸出:Brett


不是吧這么簡(jiǎn)單。其實(shí)轉(zhuǎn)變后就成為一個(gè)對(duì)象了,可以通過(guò)點(diǎn)語(yǔ)法來(lái)訪問(wèn)這些值了。XML靠邊去。
2、本地對(duì)象做成JSON
你要是能自己拼出JSON字符串也可以,不過(guò)我們是在面向?qū)ο蟮氖澜绨。敲次覀兌际菍?duì)象啊,到時(shí)候?qū)ο笾苯泳涂梢詠?lái)用了。
舉一個(gè)例子:

復(fù)制代碼 代碼如下:
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é):就兩個(gè)方法,JSON.decode(String),JSON.encode(Object),有這么簡(jiǎn)單的方式實(shí)現(xiàn)傳輸量小,而且簡(jiǎn)單的數(shù)據(jù)格式,我們?yōu)槭裁催€不用呢?
其實(shí)XML自然也有他自己的強(qiáng)勢(shì),當(dāng)一個(gè)結(jié)構(gòu)復(fù)雜的數(shù)據(jù)結(jié)構(gòu)出現(xiàn)的時(shí)候,這個(gè)時(shí)候JSON就很難搞定了,XML就是首選了。

JavaScript技術(shù)JSON掃盲帖 JSON.as類教程,轉(zhuǎn)載需保留來(lái)源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 无套内射CHINESEHD | 国内精品国内自产视频 | 免费看男人J放进女人J无遮掩 | 综合亚洲桃色第一影院 | 浪荡受自我调教纯肉BL | 果冻传媒色AV国产播放 | 国产日韩亚洲专区无码 | 香蕉水蜜桃牛奶涩涩 | 亚洲国产在线2020最新 | 姐姐不~不可以动漫在线观看 | 吃胸亲吻吃奶摸下面免费视频 | 成片在线看一区二区草莓 | 青草影院天堂男人久久 | 国产精品人妻午夜福利 | 国产精品视频免费观看 | 被两根巨大同时进去高H | 国产亚洲日韩另类在线播放 | 无人区乱码区1卡2卡三卡在线 | 亚州精品视频 | 欧洲精品一区二区不卡观看 | 蜜桃日本免费观看MV | 波野结衣qvod | 98久久无码一区人妻A片蜜 | 国产人妻人伦精品9 | 玩弄朋友娇妻呻吟交换电影 | 无码成A毛片免费 | 色情www日本欧美 | 国产精品…在线观看 | 擦擦擦在线视频观看 | 色悠久久久久综合欧美99 | 竹菊精品久久久久久久99蜜桃 | 超碰在线视频caoporn | 欧美日韩国产高清综合二区 | 全肉高H短篇合集 | gogo亚洲肉体艺术照片9090 | 免费小视频在线观看 | 日韩精品特黄毛片免费看 | 午理论理影片被窝 | 双性精跪趴灌满h室友4p | 亚洲日本激情 | 涩涩爱涩涩片影院 |