軟件開發中,AS3中JSON的基本應用
來源:河南尋唐軟件科技有限公司 添加時間:2018/10/4 13:44:02
JSON是一種輕量級的數據交換格式,易于解析和生成,也易于閱讀和編寫,JSON作為數據傳輸會是個首選。
首先,你需要有一個JSON的類庫,建議去下載adobe官方提供的產品外類庫:as3corelib。
先說說獲取數據。可以這么說,只要你懂AS3與XML的交互,那么就一定能懂JSON,因為兩者幾乎是一樣的,你唯一需要做的只是了解一下JSON 的格式。例如下面這個JSON的例子,就像XML一樣,你可以通過任何動態頁面來生成這個格式,也可以通過靜態的甚至TXT來讀取也行。
[{"name":"Hans","age":"32"},
{"name":"John","age":"12"},
{"name":"Zaki","age":"34"},
{"name":"Dr. Cox","age":"88"}]
AS中的代碼:
package {
import com.adobe.serialization.json.JSON;
import flash.display.Sprite;
import flash.events.Event;
import flash.net.URLLoader;
import flash.net.URLRequest;
public class getJSON extends Sprite {
public function getJSON() {
var loader:URLLoader = new URLLoader();
loader.load(new URLRequest( "http://127.0.0.1/json.php" ));//這里是你要獲取JSON的路徑
loader.addEventListener(Event.COMPLETE, decodeJSON);
}
private function decodeJSON(evt:Event):void {
var persons:Array = JSON.decode( URLLoader( evt.target ).data );
//在這里,就可以通過操作數組來應用數據了,很方便
for (var i=0; i<persons.length; i++) {
trace( persons[i].name );
}
}
}
}
是不是很簡單呢?在這里我們只用到了decode()這個方法,其實JSON類庫要用的也只有兩個方法,另一個就是馬上要用到的encode()。大家可以理解為編碼與解碼。發送數據的代碼如下:
package {
import com.adobe.serialization.json.JSON;
import flash.display.Sprite;
import flash.events.Event;
import flash.net.*;
public class sendJSON extends Sprite {
public function sendJSON() {
var arr : Array = new Array({"name":"Hans","age":"32"},{"name":"John","age":"12"},{"name":"Zaki","age":"34"},{"name":"Dr. Cox","age":"88"});//這里是要發送的數據,可以直接寫,也可以是由其他方法生成,不過要注意格式。
sendjson( arr );
}
private function sendjson( a : Array ):void {
var jsonString : String = JSON.encode(a);
var urlVariables:URLVariables = new URLVariables();
urlVariables.json = jsonString;
var urlRequest:URLRequest = new URLRequest(http://127.0.0.1/json.php); //這里是接收數據的動態頁。
urlRequest.method = URLRequestMethod.POST;
urlRequest.data = urlVariables;
//其實到這已經結束了,下面的XML只是測試結果而已。
var urlLoader:URLLoader = new URLLoader();
urlLoader.addEventListener(Event.COMPLETE, onURLLoaderCompleteEvent);
urlLoader.load(urlRequest);
}
private function onURLLoaderCompleteEvent( evt : Event ):void {
var xml:XML = new XML(evt.target.data);
trace(xml);
}
}
}