JSON Mustafa Ahmet KARA
Uygulamayı Flex ile geliştireceğimiz için Flex’in sunduğu RUI bileşenlerini kullanacağız. Flex Builder Eclipse Framework’ü üzerinde geliştirildiği için Eclipse kullananların aşina olduğu geliştirme ortamını size sunar, ama gördüğüm en güzel ve kolay kullanılabilir Eclipse modülüdür. Beta sürümünde script tagında derleme sırasında hata almamak için işletim sisteminizin tüm dil ayarlarının İngilizce olması gerekmektedir. Tanıtımdan sonra geliştirmeye ilk adımdan başlayalım:
FlexBuilder’i çalıştırınız ve Flex Development Perspective’inde olduğunuzdan emin olunuz. (Window > Open Perspective > Flex Perspective).
Navigator görünümün açık olduğundan emin olunuz. Eğer açık değil ise Window > Show View > Navigator ile açınız.
Navigator’e sağ tıklayarak New Flex Project’i seçiniz. JSONExample olarak isimlendiriniz ve Next düğmesine tıklayınız. Kaydedilecek yer için Use default location seçeneğini seçiniz ve Next düğmesine tıklayınız. Add SWC düğmesi ile JSON işlemleri için gerekli olan corelib.swc yi ekleyiniz. Bu SWC kütüphanesi AS2corelib ‘i indirdiğiniz klasörde bin klasörünün altındadır. Finish düğmesine tıklayarak projenizi oluşturunuz.
İlk yapacağımız işler, sonuçlar için List, resim için Image ve JSON sonuçları için de Text eklemek olacaktır. Bunun için JSONExample.mxml dosyasına çift tıklayarak editörde açınız. Design (sol üst köşede) moduna geçiniz. Editörün sol alt köşesinde Components listesi olacaktır. Yok ise (Window > Show View > Components) ile gösterebilirsiniz.
Components ‘ten bir List alıp forma bırakınız. Properties ( yok ise Window > Show View > Flex Properties) ekranında idsini lst1 ve On change için ise onListChange(event) yazınız. Yerleşimini ayarlayınız.
Components’ten bir Image alıp forma bırakınız.Properties ekranında idsini img1 olarak ayarlayınız ve yerleşimini ayarlayınız.
Components’ten bir textarea alıp forma bırakınız. Properties ekranında idsini txt olarak ayarlayınız ve yerleşimini ayarlayınız. Editörün sol üst köşesinden Source düğmesine tıkladığınızda aşağıdaki gibi gözükecektir.
-
<?xml version="1.0" encoding="utf-8"?>
-
-
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
-
-
left="0" height="77"/>
-
change="onListChange(event)"></mx:List>
-
<mx:Image left="239" right="0" top="0" bottom="76" id="img1" />
-
-
</mx:Application>
Şimdi Yahoo search apisinden sonuçları alacak olan bağlantıyı yapalım mx:Application tag’ı altına aşağıdaki satırı ekleyiniz.
-
<mx:HTTPService id="service"
-
resultFormat="text"
-
url="http://api.search.yahoo.com/ImageSearchService/V1/imageSearch?appid=YahooDemo&query=makara&results=50&output=json"
-
result="onJSONLoad(event)" />
Bu satır ise belirtilen adrese bir çağrı yapılacağını sonucun text olacağını ve sonucun onJSONLoad fonksiyonuna gönderileceğini belirtir.
Şimdi tek ihtiyacımız fonksiyonları yazmak olacaktır. Bunun için bir Script bloğu’nu mx:Application etiketi altına ve mx:HTTPService üzerine ekleyelim. Sonuçta oluşacak kodumuz ise aşağıdaki gibi olacaktır.
-
<mx:Script>
-
<![CDATA[
-
-
import mx.events.ListEvent;
-
import mx.rpc.events.ResultEvent;
-
import com.adobe.serialization.json.JSON;
-
-
// Yahoo sonuçlarını tutacak olan nesne
-
private var JSONObject:Object = null;
-
-
//List üzerinde bir değişiklik olduğunda JSON nesnesi üzerinden resmi al
-
//ve resmi değiştir.
-
private function onListChange(event:ListEvent):void
-
{
-
img1.source = JSONObject.ResultSet.Result[event.rowIndex].Url;
-
-
}
-
//Servis yüklemesi yaptıktan sonra bu fonksiyon çalışır
-
private function onJSONLoad(event:ResultEvent):void
-
{
-
//JSON datasını event üzerinden al ve string olarak işle
-
var rawData:String = String(event.result);
-
-
//string datayı txt isimli JSON sonuç göstericisine ata
-
txt.text=rawData;
-
-
//Gelen datajı AS3CoreLib'in sunduğu statik fonksiyona gönder
-
//ve JSONObject değişkenine ata
-
JSONObject = (JSON.decode(rawData) as Object);
-
-
//Sonuçlardan Title alanı liste içinde gösterilecektir.
-
lst1.labelField = "Title";
-
-
//listenin veri kaynağı olarak Yahoo sonuçlarını bağla
-
// Sonuçlar artık actionscript nesnesidir direkt kullanabilirsiniz
-
lst1.dataProvider = JSONObject.ResultSet.Result;
-
-
}
-
]]>
-
</mx:Script>
Sizinde göreceğiniz gibi Internetten aldığımız tüm sonuçları JSON ile decode ettikten sonra herhangi bir ActionScript nesnesi olarak herhangi bir ek işleme maruz bırakmadan kullanabiliyoruz.
Bu işlemden sonra tek ihtiyacımız Application nesnesi oluşturulduktan sonra HTTPService ile Yahoo Search’e çağrı yapmaktır. Bunun için mx:Application etiketine yükleme sonrasında çağrı yapmasını sağlayan özelliği ekleyelim:
creationComplete = “service.send()”
Bu adımdan sonra yapmamız gereken bir işlem kalmamıştır. Çalıştırıp sonucu görebilirsiniz.
Bu projenin tüm kodlarını ve çalışan halini görmek isterseniz ek dosyalar kısmından örneği indirebilirsiniz. Çalıştırmak için bin klasöründeki JSONExample.html dosyasını bir tarayıcı ile açabilirsiniz. Flash Playeriniz eski sürüm ise Adobe sistesinden yüklemeniz için sayfa sizi uyaracaktır.
Bu yazımda Adobe’un AJAX javascript kütüphanesi olan Spry Framework for Ajax (JSON desteği şu anda betasında mevcuttur), Flex-Ajax Brige, Flash Ajax-Video Component konularından çok ayrıntılı olacağı ve yazıyı çok uzatacağı için bahsedemiyorum. JSON serilerimizi bitirdikten sonra, Flex’in JavaScript ve AJAX dünyasına neler kazandırabileceklerini bir başka yazımda birleştirmeyi planlıyorum. O zamana kadar şimdilik hoşçakalın, tekrar görüşmek üzere.
Uygulama Örneği
JSONExample - Yazımızda geliştirmiş olduğumuz uygulama
Sayfalar: 1 2
Toplamda 3099 kez okunmuş.
Şu an 1 kişi okuyor.
En fazla 4 kişi aynı anda okumuş.
Bugün 14 kez okunmuş.
Etiketler: actionscript, json
Trackback Yorumları takip et Baskı Önizleme

# sinan | 22 Eylül 2007, 19:30
ellerinize sağlık diyorum inş daha güzel şeyler olacak.
# Cem | 22 Nisan 2008, 13:28
Slm gerçekten güzel bir yazı. Buradan anladığım kadarıyla sanırım JSON sayesinde php dosyalarındaki functionları da çalıştırıp dönen datayı elde edebiliyoruz. Ve dolayısıyla Action Script ‘in en hoşlanmadığım yanı olan veritabanı bağlantısına izin vermeyişide böylece aşılmış oluyor. Böylece php dosyasındaki function ı çalıştırıp veritabanını sorgulatarak dönen dataları almak yada data yazmak mümkün olacak.
Yalnız bunun AS3 ile Flashta nasıl yapılacağı konusunda da kısa bir bilgi verirseniz sevinirim
Teşekkürler…