JSON, web uygulamaları ve web hizmetleri için tercih edilen veri değişim formatı olarak XML’i geride bıraktı. İşte neden
JavaScript Nesne Gösterimi, anahtar/değer çiftlerine ve sıralı listelere dayanan yapılandırılmış verilerin şemasız, metin tabanlı bir temsilidir. JSON, JavaScript’ten türetilmiş olsa da, çoğu büyük programlama dilinde yerel olarak veya kitaplıklar aracılığıyla desteklenir. JSON, web istemcileri ve web sunucuları arasında bilgi alışverişinde bulunmak için yaygın olarak kullanılır, ancak özel değildir.
Son 15 yılda JSON, web’de her yerde bulunur hale geldi. Bugün, hemen hemen her kamuya açık web hizmeti için tercih edilen formattır ve özel web hizmetleri için de sıklıkla kullanılmaktadır.
JSON’un popülaritesi, birçok veritabanı tarafından yerel JSON desteğiyle de sonuçlandı. PostgreSQL ve MySQL gibi ilişkisel veritabanları artık JSON verilerini depolamak ve sorgulamak için yerel desteğe sahiptir. MongoDB ve Neo4j gibi NoSQL veritabanları da JSON’u destekler, ancak MongoDB sahne arkasında JSON’un biraz değiştirilmiş, ikili bir sürümünü kullanır.
Bu yazıda JSON’a hızlıca göz atacağız ve nereden geldiğini, XML’e göre avantajlarını, dezavantajlarını, ne zaman kullanmanız gerektiğini ve ne zaman alternatifleri düşünmeniz gerektiğini tartışacağız. Ama önce, JSON’un pratikte neye benzediğinin küçük ayrıntılarına girelim.
JSON’da kodlanmış bir veri örneği:
veri.json
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
{ "isim" : "Hayri", "soyisim" : "KOÇ", "yas" : 38, "yazar" : true, "diller" : ["C#","PHP","JavaScript","Python","Java"], "adres" : [ { "il" : "Edirne", "ilce" : "Enez" } ] } |
Yukarıdaki yapı, bir kişinin bazı özelliklerini açıkça tanımlar. Adını ve soyadını, kişinin diğer bilgileri gibi bir çok veriyi bir arada tutabilir. Yukarıdaki gibi bir yapı, bir sunucudan bir web tarayıcısına veya bir mobil uygulamaya geçirilebilir, bu daha sonra verileri görüntülemek veya daha sonra başvurmak üzere kaydetmek gibi bazı eylemler gerçekleştirir.
JSON, minimum sayıda değer türüne sahip genel bir veri biçimidir: dizeler, sayılar, booleanlar, listeler, nesneler ve boş. Gösterim JavaScript’in bir alt kümesi olmasına rağmen, bu türler tüm yaygın programlama dillerinde temsil edilir ve JSON’u dil boşlukları arasında veri iletmek için iyi bir aday yapar.
JSON dosyaları
JSON verileri, .json uzantısıyla biten dosyalarda depolanır. JSON’un insan tarafından okunabilir değerlerine uygun olarak, bunlar yalnızca düz metin dosyalarıdır ve kolayca açılıp incelenebilir. SQLizer blogunun açıkladığı gibi, bu aynı zamanda JSON’un daha geniş birlikte çalışabilirliğinin anahtarıdır, çünkü adlandırabileceğiniz hemen hemen her dil düz metin dosyalarını okuyabilir ve işleyebilir ve bunların İnternet üzerinden gönderilmesi kolaydır.
Neden JSON kullanmalıyım?
JSON’un kullanışlılığını ve önemini anlamak için web’deki etkileşimin tarihini biraz anlamamız gerekecek.
2000’lerin başında, web’deki etkileşim dönüşüme başladı. O zamanlar, tarayıcı esas olarak bilgileri görüntülemek için aptal bir istemci olarak hizmet ediyordu ve sunucu, içeriği görüntülemek için hazırlamak için tüm zor işi yaptı. Bir kullanıcı tarayıcıda bir bağlantıya veya bir düğmeye tıkladığında, sunucuya bir istek gönderilir, sunucu gerekli bilgileri HTML olarak hazırlar ve tarayıcı HTML’yi yeni bir sayfa olarak oluşturur. Bu kalıp yavaş ve verimsizdi, tarayıcının sayfanın yalnızca bir bölümü değişmiş olsa bile sayfadaki her şeyi yeniden oluşturmasını gerektiriyordu.
Tam sayfa yeniden yüklemeleri maliyetli olduğundan, web geliştiricileri genel kullanıcı deneyimini geliştirmek için daha yeni teknolojilere yöneldiler. Bu arada, son zamanlarda Internet Explorer 5’te tanıtılan bir sayfa gösterilirken arka planda web istekleri yapma yeteneği, görüntüleme için aşamalı olarak veri yüklemeye uygulanabilir bir yaklaşım olduğunu kanıtlıyordu. Sayfanın tüm içeriğini yeniden yüklemek yerine, yenile düğmesine tıklamak, arka planda yüklenecek bir web isteğini tetikler. İçerik yüklendiğinde, tarayıcılardaki evrensel programlama dili olan JavaScript kullanılarak veriler manipüle edilebilir, kaydedilebilir ve sayfada görüntülenebilir.
REST ve SOAP: JSON bağlantısı
Başlangıçta bu veriler, SOAP (Basit Nesne Erişim Protokolü) adı verilen bir mesajlaşma protokolü kullanılarak XML biçiminde aktarıldı (bir örnek için aşağıya bakın). Ancak XML ayrıntılı ve JavaScript’te yönetilmesi zordu. JavaScript, verileri dil içinde ifade etmenin bir yolu olan nesnelere zaten sahipti, bu nedenle Douglas Crockford, yeni bir veri değiş tokuş biçimi için belirtim olarak bu ifadenin bir alt kümesini aldı ve ona JSON adını verdi. JSON, insanların okuması ve tarayıcıların ayrıştırması için çok daha kolaydı.
2000’ler boyunca, Temsili Durum Aktarımı veya REST adı verilen başka bir Web hizmetleri teknolojisi, veri aktarımı amacıyla SOAP’ı geçmeye başladı. REST API’lerini kullanarak programlamanın en büyük avantajlarından biri, yalnızca XML değil, JSON ve HTML de olmak üzere birden çok veri biçimi kullanabilmenizdir. Web geliştiricileri XML yerine JSON’u tercih etmeye başladıkça, REST’i SOAP’a tercih etmeye başladılar. Kostyantyn Kharchenko’nun Svitla blogunda belirttiği gibi, “Birçok yönden, REST’in başarısı, çeşitli platformlarda kolay kullanımı nedeniyle JSON formatından kaynaklanmaktadır.”
Bugün, JSON, web ve mobil istemciler ile arka uç hizmetler arasında veri alışverişi için fiili standarttır.
JSON’un Sınırlamaları
JSON, birçok programlama dilinde çalışması kolay, nispeten özlü, esnek bir veri formatı olmasına rağmen, formatın bazı dezavantajları vardır. İşte beş ana sınırlama:
- Şema yok. Bir yandan bu, verileri istediğiniz şekilde temsil etmek için tam esnekliğe sahip olduğunuz anlamına gelir. Öte yandan, yanlışlıkla çok kolay bir şekilde şekilsiz veriler oluşturabileceğiniz anlamına gelir.
- Yalnızca bir sayı türü: IEEE-754 çift duyarlıklı kayan nokta biçimi. Bu oldukça ağız dolusu, ancak birçok programlama dilinde bulunan çeşitli ve nüanslı sayı türlerinden yararlanamayacağınız anlamına gelir.
- Tarih türü yok. Bu ihmal, geliştiricilerin, biçimlendirme tutarsızlıklarına yol açan, tarihlerin dize temsillerini kullanmaya başvurması veya çağlardan (1 Ocak 1970) bu yana milisaniye biçiminde tarihleri temsil etmesi gerektiği anlamına gelir.
- Yorum yok. Bu, ek belgeler gerektiren ve yanlış anlama olasılığını artıran alanlara satır içi açıklama eklemeyi imkansız hale getirir.
- ayrıntı. JSON, XML’den daha az ayrıntılı olsa da, en özlü veri değişim biçimi değildir. Yüksek hacimli veya özel amaçlı hizmetler için daha verimli veri biçimleri kullanmak isteyeceksiniz.
JSON’u ne zaman kullanmalıyım?
Bir tarayıcı veya yerel mobil uygulama ile iletişim kuran bir yazılım yazıyorsanız, veri formatı olarak JSON kullanmalısınız. XML gibi bir biçim kullanmak, güncelliğini yitirmiş bir seçimdir ve aksi takdirde çekmek isteyeceğiniz ön uç ve mobil yetenekler için kırmızı bir bayraktır.
Sunucudan sunucuya iletişim durumunda, Apache Avro veya Apache Thrift gibi bir serileştirme çerçevesi kullanmanız daha iyi olabilir. JSON burada kötü bir seçim değil ve yine de tam olarak ihtiyacınız olan şey olabilir, ancak yanıt web ve mobil iletişim kadar net değil.
NoSQL veritabanlarını kullanıyorsanız, veritabanı size ne verirse versin, hemen hemen takılıp kalırsınız. Bir tür olarak JSON’u destekleyen ilişkisel veritabanlarında, iyi bir kural, onu mümkün olduğunca az kullanmaktır. İlişkisel veritabanları, belirli bir şemaya uyan yapılandırılmış veriler için ayarlanmıştır. Çoğu artık JSON biçiminde daha esnek verileri desteklerken, bu JSON nesneleri içindeki özellikleri sorgularken bir performans artışı bekleyebilirsiniz.
JSON, web sunucuları, tarayıcılar ve mobil uygulamalar arasında veri göndermek için her yerde bulunan fiili formattır. Basit tasarımı ve esnekliği, okumayı ve anlamayı kolaylaştırır ve çoğu durumda seçtiğiniz programlama dilinde manipüle etmeyi kolaylaştırır. Katı bir şemanın olmaması, formatın esnekliğini sağlar, ancak bu esneklik bazen JSON’u düzgün bir şekilde okuyup yazmanızı sağlamayı zorlaştırır.
JSON ayrıştırıcı
Bir uygulamanın kodunun, JSON olarak depolanan verileri uygulamanın kullanabileceği bir biçime dönüştüren kısmına ayrıştırıcı denir. JavaScript, beklediğiniz gibi, yerel bir ayrıştırıcı olan JSON.parse() yöntemini içerir.
Scala veya Elm gibi güçlü yazılan dillerde JSON ile çalışmak için biraz daha fazla çalışmanız gerekebilir, ancak JSON’un yaygın olarak benimsenmesi, en zor kısımlarda size yardımcı olacak kitaplıklar ve yardımcı programların olduğu anlamına gelir.
json.org web sitesi, Python, C# ve COBOL gibi çeşitli dillerde JSON’u ayrıştırmak, oluşturmak ve işlemek için kullanabileceğiniz kapsamlı bir kod kitaplıkları listesi içerir.
Add Comment