JavaScript Object Notation (JSON kısaltmasıdır ve 'Jason' ismi gibi telaffuz edilir), bir veri paylaşım formatı türüdür. Adından da anlaşılacağı gibi, JSON şuradan türemiştir: JavaScript, ancak kullanımına izin veren tek kod sahibi o değildir. Aslında, aşağıdakiler de dahil olmak üzere diğer birçok programlama dili de bunu kullanabilir: Ruby, PHP, Python, ve Java.
Kendi başına var olduğunda, JSON dosyası .json uzantısını kullanır, ancak bir web sunucusu ile bir istemci (veya tarayıcı) arasında kolayca iletilebilen bir format olduğundan, bir .html formatı olarak da tanımlanabilir. Bu durumda, bir değişkene atanan bir nesne olabilir veya tırnak işaretleri içinde bir JSON dizesi olarak görünebilir.
JSON, daha okunabilir olması ve minimum biçimlendirme gerektirmesi nedeniyle XML'e iyi bir alternatiftir. Bu eğitim size JSON dosyalarında depolanabilen verilerin yanı sıra format’ın genel sözdizimi ve yapısını öğretecektir.
Yapı & Sözdizimi
Bir JSON nesnesi, anahtar-değer çiftlerini temsil etmek için süslü parantezler kullanan bir veri formatıdır. JSON ile çalışırken, bunu çoğunlukla .json dosyalarında işlenmiş olarak görürsünüz, ancak bir program bağlamında bir dize veya bir JSON nesnesi olarak da var olabilir.
Bir JSON nesnesinin nasıl göründüğüne dair bir örnek:

Bu oldukça kısa bir örnek olsa ve JSON nesneleri çok daha uzun olabilse de, formatın her iki uçta iki süslü parantez ile nasıl kurulduğunu ve aradaki boşluğu anahtar-değer çiftlerinin doldurduğunu doğru bir şekilde göstermektedir. JSON'daki verilerin çoğunluğu bir JSON öğesi içinde kapsüllenir.
Anahtar-değer çiftlerini sınırlayan bir iki nokta üst üste vardır (“anahtar” : “değer”). Bu çiftlerin her biri, bir virgül ile listenin farklı üyeleri olarak ayrılır. Bu, bir JSON biçimlendirmesinin orta kısmının şu şekilde sonuçlanmasını sağlar: “anahtar” : “değer”, “anahtar” : “değer”, “anahtar” : “değer”. Yukarıdaki örnekte, "name" : "Akshay" örneğin ilk anahtar-değer çiftidir.
Her nesnedeki anahtarlar benzersiz olmalı, geçerli herhangi bir dize olarak sunulabilmeli, çift tırnak içine alınmalı (“anahtar”) ve her zaman iki nokta üst üste işaretinin sol tarafında yer almalıdır. Anahtar dizelerindeki boşluklara izin verilse de (örneğin “first name”), erişim açısından programlama tarafında daha zorlu bir yaklaşım sunar. Bu nedenle, yaygın olarak benimsenen programlama pratiği, anahtarlardaki boşlukları alt çizgilerle değiştirmektir (“first_name”).
JSON'daki değerler iki nokta üst üste işaretinin sağında yer alır. En temel ayrıntı düzeyinde, bunların 6 özel veri türünden biri olması gerekir:
- Sayılar
- Nesneler
- Diziler
- Dizeler
- Doğru veya Yanlış (Boolean)
- Null
Bir sonraki bölümde, JSON nesne dizisinin daha karmaşık veri türleri ele alınacak ve JSON'a aktarılan her değer kendi sözdizimini koruyacaktır. Başka bir deyişle, dizeler tırnak içinde görünmeye devam ederken, sayısal değerler görünmeyecektir.
JSON formatı, geleneksel olarak genellikle çok satırlı bir formatta listelenir. Ancak tek bir satır halinde de biçimlendirilebilir:

Bu tür bir biçimlendirme, bir JSON dizesiyle karşılaşıldığında veya başka bir dosya türü içinde daha yaygındır. Büyük veri kümeleriyle çalışırken, iki nokta üst üste işaretlerini ve anahtar-değer çiftlerini ayrı satırlara yazmak, JSON boşlukların ayırıcı yardımından yoksun olduğu için listenin insan gözüyle daha okunabilir olmasını sağlar:

JSON nesnesi JavaScript'e benzese de, bunların farklı formatlar olduğunu unutmamak önemlidir. JavaScript fonksiyonların kullanımına izin verirken, JSON izin vermez. JSON'u bu kadar değerli kılan şey, tüm programlama platformlarının onu yorumlamasına izin veren diller arası uyumluluğudur.
Şimdiye kadar JSON formatına yalnızca en basit haliyle baktık, ancak iç içe geçmiş nesneler ve diziler içerdiğinde hiyerarşik olarak ve daha karmaşık bir şekilde gelişebilir. Bir sonraki bölümde daha gelişmiş JSON'a bakacağız.
Karmaşık JSON Türlerini Kullanma
İç içe geçmiş dizilere ek olarak, JSON iç içe geçmiş nesneleri de depolayabilir. Bu nesneler ve diziler, anahtarlar için değerler olarak aktarılacak ve anahtar-değer çiftleri oluşturmak üzere anahtarlarla ilişkilendirilecektir.
- İç İçe Geçmiş Nesnelerin Oluşturulması
Aşağıdaki users.json dosya görseli, dört kullanıcının her biri için aktarılan iç içe geçmiş bir JSON nesnesi vardır (“akshay”, “sam”, “Andrew”, “James”). Her kullanıcı kendi iç içe geçmiş anahtarlarına sahiptir (“location” ve “username”):

Vurgulanan kısım, ilk iç içe geçmiş nesnenin bir örneğini temsil eder. Yukarıdaki örnekte, dört kullanıcının her biri için karşılık gelen bir kullanıcı adı ve konum ayrıntılarına sahip iç içe geçmiş bir JSON nesnesi oluşturmak için süslü parantezler kullanılmıştır. Nesneler kullanılırken, belirli kullanıcı özniteliğine göre öğeleri ayırt etmek için virgül kullanılır.
- İç İçe Geçmiş Dizilerin Oluşturulması
Değer olarak aktarılan Javascript dizileri, verileri JSON formatında iç içe yerleştirmek için de kullanılabilir. Bu, [ ] (köşeli parantez) dizi türlerinin sonunda kullanılarak yapılır; diziler, benzersiz veri türlerini içeren yapılandırılmış listelerdir:

Yukarıdaki örneklerin vurgulanan bölümünde, Akshay’in 2 sosyal medya profil sitesi ve 2 web sitesi bağlantısı, köşeli parantezlerin varlığı nedeniyle iç içe geçmiş bilgi dizisi içinde kullanılmıştır. JSON'da bu şekilde iç içe yerleştirmeyi dahil ederek, hiyerarşik ve karmaşık veri içeriğiyle çalışırken daha fazla çok yönlülük elde edebiliriz.
- XML Karşılaştırması
Extensible Markup Language (XML) hem makineler hem de insanlar tarafından erişilebilen verileri depolamak için bir yöntem sağlar. JSON gibi XML de birçok programlama dili tarafından kullanılabilir. JSON'un aksine XML, önemli ölçüde daha fazla metin içerir ve bu nedenle bir araya getirilmesi daha karmaşık ve zaman alıcıdır. Standart bir işlev JSON'u ayrıştırabilirken, XML, XML'e özgü bir ayrıştırıcı gerektirir. Bunun da ötesinde, XML dizileri kullanamaz. Aynı verilerin XML ve JSON olarak biçimlendirilmesini karşılaştıralım:

XML önemli ölçüde daha fazla metin gerektirir ve daha fazla yer kaplar. Ayrıca bitiş etiketleri gerektirir, oysa JSON çok daha kompakt ve basit bir şekilde düzenlenmiştir. HTML'e aşina olanlar muhtemelen XML'in etiket kullanımındaki benzerliği fark edebilirler.
Hangi formatı kullanacağınıza karar vermeden önce, projenin kapsamını ve ihtiyaçlarını değerlendirmek her zaman yardımcı olur. JSON daha az ayrıntılıdır, daha yalındır ve AJAX uygulamaları ile diğer durumlar için hızlıca kullanılabilir. Proje türü, kullanılacak en uygun veri yapılarını belirlemeye yardımcı olacaktır.
JSON Hakkında Daha Fazla Bilgi Edinmek
JSON, birden fazla programlama dilinde uygulanabilen çok yönlü ve doğal bir formattır. Desteklenen dillerin tam listesini “Introducing JSON” sayfasında bulabilirsiniz. Ayrıca, ayrıştırma ve uyumluluk bilgileri “iQuery kütüphanesinde” bulunabilir.
Sonuç olarak, büyük olasılıkla çok sık düz JSON yazmayacaksınız. Bunun yerine, verileri veri kaynaklarından çekecek veya diğer veri dosyalarını JSON'a dönüştüreceksiniz. Açık kaynaklı Mr. Data Converter aracını kullanarak, elektronik tablo programlarında bulunan CSV veya sekmeyle ayrılmış verileri JSON'a dönüştürebilirsiniz. Creative Commons lisanslı utilities-online.info platformu ile XML'i JSON'a veya tersine dönüştürebilirsiniz. Otomatik yazılım kullanırken, her türlü gereksiz yinelemeyi ortadan kaldırmak için raporları tekrar kontrol edin.
Ayrıca, JSONLint aracını JSON'unuzu doğrulamak için ve JFiddle aracını ise diğer türleri JSON formatına dönüştürürken bir web geliştirme bağlamında değerlendirmek için kullanabilirsiniz.
Sonuç
Giderek daha fazla API desteği kazanan (Twitter API dahil) JSON, verileri düzenleme, depolama ve paylaşmada basitliği teşvik eden hafif bir veri formatıdır. Kendi .json dosyalarınızı oluşturmayıp bunları başka mecralardan alacağınız için, JSON'un yapısından ziyade programlarınızda nasıl kullanılacağını düşünmek daha önemlidir.
İşte blogumuzdan JavaScript ile programlamanıza yardımcı olacak diğer kaynaklar:
- Javascript'te prototiplerin ve kalıtımların nasıl çalıştığını öğrenin
- HTML'e JavaScript'in nasıl ekleneceğini ayrıntılı olarak inceleyin.
- Kendi web uygulamanızı oluşturuyorsanız, en iyi sunucu kurulumunun nasıl seçileceğine ilişkin kılavuzumuza göz atın.
Keyifli Çalışmalar!
Yorumlar
Henüz yorum yapılmamış. İlk siz olun.