Ana Sayfa

Bilgisayar Eğitim CD

Bilgisayar Kitapları

 
 
Adım Adım Web Eğitim Seti Adobe Flash Eğitim Seti


Ajax Dersleri

Ajax Eğitim Seti

JSON

JavaScript Object Notation konusundan sizlere bahsedeceğim. Giriş düzeyinde başlayacak yazımda ileri ve üst düzeyde kullanımını, faydaları ve götürüleri ile alternatifleri hakkında sizlere yazı serileri ile bilgi vermeye çalışacağım

JSON genelde XML’in zayıflatılmış alternatifi olarak gündeme gelir. Temelde XML gibi bir veri değişim formatıdır. İnsanların okuyup anlaması için kolay, programlama dillerinin de dönüştürme ve yorumlamaları için oldukça kolaydır. Temel olarak Javascript programlama dilinin Standart Ecma-262 3.Yayın - Aralık 1999 sürümünün alt kümesi üzerine kurulmuştur. Metin tabanlı veri değiştirme formatı olduğu için ve C türevi dillere benzeyen yazılımından dolayı, bu tür dillerde rahatlıkla işlenebilir.

JSON iki adet temel yapıda gündeme gelir:

İsim/değer çifti kolleksiyonu: Çoğu programlama dilinde “object, record, struct, dictionary,hash table, keyed list veya associative array” olarak da tanımlanır.
Sıralı değer listesi:Çoğu programlama dilinde “array, vector, list veya sequence” olarak yer alır.
Bu yapıları JSON daki ifadelerini ele alırsak aşağıdaki şekilde ifade edilirler:

Object
Bir nesne isim/değer çiftlerinin sırasız olarak birleşmesinden oluşur. Nesne tanımlaması { ile başlar } ile biter. Her bir isimden sonra : gelir ve isim/değer çiftleri , ile ayrılır. Örnek olarak aşağıdaki yapı bir nesne oluşturur.

{
“Adi”: “Mustafa”,
“Soyadi”: “Kara”
}

Array
Diziler, sıralı değer listesidir. Bir dizi [ ile başlar ve ] ile biter. Elemanları , ile ayrılır. Aşağıda bir ve iki boyutlu dizi tanımlanmasını görebilirsiniz.

[ “Pazartesi” , “Salı” , “Çarşamba” , “Perşembe” , “Cuma” , “Cumartesi” , “Pazar” ]
[
[ 1, 0, 0 ],
[ 0, 1, 0 ],
[ 0, 0, 1 ]
]

JSON içinde herhangi bir değer aşağıdakilerden biri olabilir:

“ içinde yazı (string)
sayı
true yada false
null
object veya array
Değerler kendi içinde nesneleri desteklediği için iç içe nesneleri de desteklemesi mümkündür. Örnek olarak sayfaının sağında bulunan ajax-tr son yorumlardan iki adedini JSON ile ifade edersek aşağıdaki yapı olacaktır.

[
{
“Başlık” : “30 Saniyede AJAX”,
“Yorum Sayısı”: 43,
“Yorumlayanlar”:[”ihtiyarus”,”Emin”,”Deniz”]
} ,
{
“Başlık”: “eyceks Kütüphanesi ve Örnek bir Uygulama”,
“Yorum Sayısı”: 39,
“Yorumlayanlar”:[”Mevlüt Güleç”, “sezai”, “Sinan Erdem”]
}
]

Bu kadar teorik bilgiden sonra giriş seviyesinde kullanım yöntemlerini ve artılarını tanıyalım.

JSON tamamiyle Unicode (varsayılan olarak UTF-8) çalışır. Türkçe problemini kesinlikle yaşamayacağınız veri aktarım formatlarından biridir.

JSON sürüm numarasına sahip değildir.Sürüm numarası olsa idi, oturana kadar 3.0′ı beklerdik. JSON grameri kesindir, ve tamamıyle oturmuş ve düzgün çalışan bir yapıdadır.

Postel’in “Kabul ederken esnek ol, gönderirken tutucu” ifadesine uygun yapısı vardır. O yüzden JSON yorumlayıcılar JSON harici formatları kabul eder, ama JSON oluşturucuların sağlıklı çalışması için geçerli bir JSON ifadesi oluşturması şarttır.

Bu JSON’un genişletilmesine izin verir. Örnek vermek gerekirse Javascript JSON’un bir üst kümesidir ve doğal olarak JSON desteğine sahiptir. Ve XML haricinde neredeyse tüm dillerin veri aktarımları için kullabildiği ve desteklediği bir formattır. Örnek vermek gerekirse MsAjax.NET altyapıda veri transferi için XML yerine JSON kullanır.

Kullanım örneği için sunucundan Geçerli kullanıcının adını soyadını alan ve bunu dokümana yazan kısmı örnek olarak vereceğim ve aynı işlemi XML transferi ile yaptığımızda nelerin değişeceğini inceleceğim.

Sunucu Ad = Mustafa, Soyad = Kara verisini bize ulaştırmak istesin bu veriyi aşağıdaki formatta bize gönderecektir.

{
“Ad” : “Mustafa”,
“Soyad”: “Kara”
}

Aynı veri XML ile bize ulaşması durumunda

<user>
<Ad>Mustafa</Ad>
<Soyad>Kara</Soyad>
</user>

Boşlukları hiç koymadan gönderdiğimizi varsayarsak JSON bu kadar ufak bir veride bile toplamda data kısmında 31 karakter, XML ile 45 karakter ile sunucudan %25 daha az veri alıyoruz. Dolayısıyla daha hızlı alıyoruz.

Bu veriyi yorumlama kısmı öncesinde javascript içinde XMLHttpRequest nesnesinin responseText ile aldığınız bir veriyi responseText değişkenine atamış olalım. Bunu yorumlamak ise JSON ile aşağıdaki gibi olacaktır:

UserData = eval(’('+responseText +’)');

Ve Ad ve Soyad değişkenlerini de dokümana yazdıralım

document.write(UserData.Ad + ” ” + UserData.Soyad);

Javascript fonksiyonunda text’i evale sokunca bu şekilde javascript objesi oluşturması ilk başta banada inanılmaz gelmişti ama denedikten sonra mucizenin büyüklüğünü kavradım. JavaScript JSON ‘un üst kümesi olduğu için bu inanılmaz iç içelik anlam kazanmıştı.

Aynı işlemi XML ile yapmaya kalkarsak farklı yollarımız var.

XmlDocument oluşturup XSL ile xhtml’e dönüştürüp dokümana yazdırırız.(en az 6 satır kod artı yorumlama maliyeti karşımıza çıkar)
XmlDom oluşturup düğümleri içinde gezer, Ad düğümünü bulup değerini alıp, Soyad düğümünü bulup değerini alırız. Sonra yazdırırız.(Aynı şekilde en az 6 satır kod ve yorumlama maliyeti)
Yukarıda bahsettiğim datanın aktarılmasındaki boyut azalması ve işleme kolaylığı yüzünden JSON AJAX taki X in yerini almaya çoktan başlamıştır. Bazı geliştiriciler artık AJAJ (Asynchronous JavaScript and JSON) terimini kullanmaya başlamışlardır. Bazı geliştiriciler HTML sayfaları üretmek yerine HTML taglarını JSON ile transfer etmeye başladılar ve istemcide HTML kodlarını dinamik olarak üretiyorlar.

Bu yazımda JSON konusuna bir girişte bulundum, takip eden yazılarımda JSON ile veri transferinin getirdiği faydaları ve dezavantajlarından, çeşitli sunucu tabanlı diller ile kullanımlarından, XML Web Servislerinin yerini almaya başlayan JSON Web Servislerinden bahsedeceğim