קריאת JSON עם ActionScript 3

כך משתמשים ב-as3corelib ועם JSON כדי ליצור תקשורת עם שרת באמצעות ActionScript 3

JSON, למי שלא מכיר, הוא פורמט נתונים נוח וקל לשימוש שהרבה יותר רזה מ-XML. יותר ויותר שירותים משתמשים ב-XML ולא מזמן יצא לי להשתמש ב-JSON בווידג'ט מבוסס פלאש שיצרתי. זו הזדמנות מצויינת לחלוק עמכם את הדרך שבה ביצעתי את הקריאה ל-JSON ואיך ביצעתי את ה-decoding שלו.

ל-ActionScript 3 אין decoder ל-JSON ולפיכך עלינו להשתמש בספריה חיצונית לשם כך. הבחירה שלי היא as3corelib – ספריה חינמית, אולטרא שימושית שמכילה עוד המון פונקציונליות. יש להוריד אותה מכאן. נפתח אותה ונשמור אותה בתיקית הפרויקט שלנו. אחרי כן ניצור קובץ fla שבו נבצע instance ל-class שלנו.


var myJSON:getMyJSON  = new getMyJSON(this);

ועכשיו ליצירת הקלאס החביב ששמו הוא getMyJSON, בקלאס הזה אני אצור אובייקט, אבצע לו encode על מנת להמיר אותו למחרוזת טקסט, אשלח אותו באמצעות URLRequest לסקריפט קטן ב-PHP שהופך את ה-title (זהה לזה שיש במדריך ה-JSON שלי), אקבל את הפלט, אמיר אותו לאובייקט ואדפיס אותו.

איך זה נראה? ככה:


package {
	import flash.text.*;
	import flash.events.*;
	import flash.net.*;
	import com.adobe.serialization.json.JSON;

	public class getMyJSON {
		
		private var myObj:Object = Object; //My Object
		private var myStage; //My stage
		private var loader:URLLoader; //my URL loader
		
		public function getMyJSON(myStage) { //Constructor
			
			this.myStage = myStage;
			this.myObj.title = "myJsonObject";
			this.myObj.value = "My values";

			var myJSON = JSON.encode(myObj); //encoding my object

			/* send my object to the PHP */
			var request:URLRequest = new URLRequest("https://internet-israel.com/internet_files/JSON/json.php");
			request.method = "GET";
			request.data = 'myJSON='+myJSON;
			loader = new URLLoader(request);
			loader.addEventListener(Event.COMPLETE, completeListener);				
		}
		
		/* event completed */
		private function completeListener(event:Event):void {
			trace("Finished loading. Here is the data: " + loader.data);
			var data:String = loader.data;
			this.myObj = JSON.decode(data);
			this.writeMeDown(this.myObj.title);
			
		}
		/* write it down */
		private function writeMeDown(str:String) {
			var m_myTextField:TextField = new TextField();
			m_myTextField.text = str;
			this.myStage.addChild(m_myTextField);
		}
	}
}

תשמרו ותנסו אותו אצלכם, תראו שהפלט שאתם מקבלים הוא אובייקט שזהה לאובייקט שנשלח – רק ה-title של האובייקט שלכם – הפוך.

בסך הכל זה פשוט מאד, מה שחשוב הוא לכלול את ספרית com.adobe.serialization.json.JSON ולדאוג שהיא תהיה במקום הנכון ואז להשתמש ב-JSON.decode ו-JSON.encode. אחרי כן הכל זה עניין של סמנטיקה.

פוסטים נוספים שכדאי לקרוא

ספריות ומודולים

מציאת PII באמצעות למידת מכונה

כך תגנו על משתמשים שלכם שמעלים מידע אישי רגיש כמו תעודות זהות באמצעות שירות אמאזוני.

גלילה לראש העמוד