קריאת JSON עם ActionScript 3

המאמר הקודם במדריך ה-AS3

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("http://www.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. אחרי כן הכל זה עניין של סמנטיקה.

כדאי תמיד להשאר מעודכנים! הרשמו לעדכונים של האתר במייל! - המייל יישלח כל יום ראשון בעשר בבוקר ויכיל אך ורק את המאמרים שהתפרסמו באינטרנט ישראל. ללא ספאם, ללא הצפות, ללא בלגנים. אם יש לכם טלגרם, בדקו את ערוץ הטלגרם של האתר שבו אני מעדכן על פוסטים חדשים 🙂

אהבתם? לא אהבתם? דרגו!

לא אהבתי בכלללא אהבתיבסדראהבתיאהבתי מאוד (אין הצבעות)

תגיות: פורסם בקטגוריה: לימוד Action Script 3 ו-פלאש

יאללה, שתפו :)

אל תשארו מאחור! יש עוד מה ללמוד!

כתיבת תגובה

האימייל לא יוצג באתר.

רישום