giriiş
JavaScript Nesne Gösterimi'nin kısaltması olan JSON, veri paylaşımı için bir formattır. Adından da anlaşılacağı gibi, JSON JavaScript programlama dilinden türetilmiştir, ancak Python, Ruby, PHP ve Java dahil olmak üzere birçok dilde mevcuttur. JSON genellikle "Jason" ismi gibi telaffuz edilir.
JSON ayrıca okunabilir, hafiftir, XML'e iyi bir alternatif sunar ve çok daha az biçimlendirme gerektirir. Bu bilgilendirici kılavuz, JSON dosyalarında kullanabileceğiniz verileri ve formatın genel yapısını ve sözdizimini ele almaktadır.
Sözdizimini ve yapıyı anlama
JSON, tek başına kullanıldığında .json uzantısını kullanır ve başka bir dosya biçiminde (örneğin .html) tanımlandığında, tırnak işaretleri içinde bir JSON dizesi olarak veya bir değişkene atanmış bir nesne olarak görünebilir. Bu biçim, bir web sunucusu ile bir istemci veya tarayıcı arasında iletilir.
JSON nesnesi, genellikle süslü parantezler içinde yer alan bir anahtar-değer veri biçimidir. JSON ile çalışırken, muhtemelen bir .json dosyasında JSON nesneleriyle karşılaşırsınız, ancak bunlar bir program bağlamında bir JSON nesnesi veya dizesi olarak da var olabilir.
İşte bir JSON nesnesinin örneği:
{
"first_name" : "Sammy",
"last_name" : "Shark",
"location" : "Ocean",
"online" : true,
"followers" : 987
}Bu kısa bir örnek olmasına ve JSON'un satırlarca uzunluğunda olabilmesine rağmen, formatın genellikle her iki tarafında {} ile gösterilen iki parantez (veya kıvrık parantez) ve ardından anahtar-değer çifti ile oluşturulduğunu gösterir. Çiftler, aralarındaki boşluğu doldurur. JSON'da kullanılan verilerin çoğu bir JSON nesnesinde kapsüllenir.
Anahtar-değer çiftleri, "anahtar": "değer" gibi iki nokta üst üste işaretiyle ayrılır. Her anahtar-değer çifti bir virgülle ayrılır, bu nedenle bir JSON dosyasının ortası şu şekilde listelenir: "anahtar": "değer", "anahtar": "değer", "anahtar": "değer". Önceki örnekte, ilk anahtar-değer çifti "first_name": "Sammy"dir.
JSON anahtarları iki nokta üst üste işaretinin sol tarafındadır. "anahtar" gibi çift tırnak içine alınmalı ve herhangi bir geçerli dize olabilir. Her nesne içinde anahtarlar benzersiz olmalıdır. Bu anahtar dizeleri "ad" gibi boşluklar içerebilir, ancak bu, programlama sırasında erişimi zorlaştırabilir, bu nedenle "ad" gibi alt çizgiler kullanmak daha iyidir.
JSON değerleri iki nokta üst üste işaretinin sağında bulunur. Ayrıntılı olarak, bunlar aşağıdaki altı veri türünden biri olmalıdır:
- dizeler
- sayılar
- nesneler
- diziler
- Boole değerleri (doğru veya yanlış)
- hükümsüz
Daha geniş bir düzeyde, değerler karmaşık JSON nesnesi veya dizi veri türlerinden de oluşturulabilir; bu konu bir sonraki bölümde ele alınacaktır.
JSON'a değer olarak geçirilen veri türlerinin her biri kendi sözdizimini korur, yani dizeler tırnak içine alınır, ancak sayılar tırnak içine alınmaz.
.json dosyalarıyla, genellikle birden fazla satıra yayılmış bir şablon elde edersiniz, ancak JSON, aşağıdaki örnekte olduğu gibi tek bir satıra da yazılabilir:
{ "first_name" : "Sammy", "last_name": "Shark", "online" : true, }Bu durum başka bir dosya türünde veya bir JSON dizesiyle karşılaştığınızda daha yaygındır.
JSON'u birden fazla satıra yazmak, özellikle büyük bir veri kümesiyle çalışıyorsanız, onu çok daha okunabilir hale getirir. JSON, öğeleri arasındaki boşlukları dikkate almadığından, anahtar-değer çiftlerinizi iki nokta üst üste işaretiyle ayırarak verileri daha da okunabilir hale getirebilirsiniz:
{
"first_name" : "Sammy",
"last_name" : "Shark",
"online" : true
}Bir JSON nesnesinin benzer görünse de, bir JavaScript nesnesiyle aynı formatta olmadığını unutmamak önemlidir. Bu nedenle, JavaScript nesnelerinde fonksiyonlar kullanabilmenize rağmen, bunları JSON'da değer olarak kullanamazsınız. JSON'un en önemli özelliği, tüm katılımcı dillerin çalışabileceği bir formatta programlama dilleri arasında kolayca aktarılabilmesidir. Buna karşılık, JavaScript nesneleri yalnızca doğrudan JavaScript programlama dili aracılığıyla kullanılabilir.
JSON, iç içe geçmiş nesneler ve dizilerden oluşan hiyerarşilerle daha karmaşık hale getirilebilir. Bir sonraki adımda bu karmaşık yapılar hakkında daha fazla bilgi edineceksiniz.
JSON'da karmaşık tiplerle çalışma
İç içe dizilere ek olarak, JSON, iç içe nesneleri JSON biçiminde depolayabilir. Bu nesneler ve diziler, anahtarlara atanmış değerler olarak gönderilir ve anahtar-değer çiftlerinden oluşabilir.
İç içe geçmiş nesneler
Aşağıdaki users.json dosyasında, dört kullanıcının her biri ("sammy", "jesse", "drew", "jamie") için, her birinin değeri olarak, her bir kullanıcıya karşılık gelen kendi iç içe geçmiş "kullanıcı adı" ve "konum" anahtarlarıyla birlikte, iç içe geçmiş bir JSON nesnesi geçirilir. Aşağıdaki kod bloğundaki her kullanıcı girişi, iç içe geçmiş bir JSON nesnesine örnektir:
{
"sammy" : {
"username" : "SammyShark",
"location" : "Indian Ocean",
"online" : true,
"followers" : 987
},
"jesse" : {
"username" : "JesseOctopus",
"location" : "Pacific Ocean",
"online" : false,
"followers" : 432
},
"drew" : {
"username" : "DrewSquid",
"location" : "Atlantic Ocean",
"online" : false,
"followers" : 321
},
"jamie" : {
"username" : "JamieMantisShrimp",
"location" : "Pacific Ocean",
"online" : true,
"followers" : 654
}
}Bu örnekte, dört kullanıcının her biri için kullanıcı adı ve ilişkili konum verilerini içeren iç içe geçmiş bir JSON nesnesi oluşturmak için süslü parantezler kullanılmıştır. Diğer tüm değerlerde olduğu gibi, nesneler kullanılırken de öğeleri ayırmak için virgüller kullanılır.
İç içe diziler
Ayrıca, değer olarak geçirilen JavaScript dizilerini kullanarak JSON'a veri yerleştirebilirsiniz. JavaScript, dizi türünün her iki ucunda köşeli parantez [ ] kullanır. Diziler sıralı koleksiyonlardır ve farklı veri türlerinde değerler içerebilirler.
Örneğin, tek bir kullanıcıyla ilişkili farklı web siteleri ve sosyal medya profilleri gibi, birlikte gruplandırılabilen çok sayıda veriyle uğraşırken bir dizi kullanabilirsiniz.
İlk iç içe diziyle, “Sammy” için bir kullanıcı profili şu şekilde görünebilir:
{
"first_name" : "Sammy",
"last_name" : "Shark",
"location" : "Ocean",
"websites" : [
{
"description" : "work",
"URL" : "https://www.digitalocean.com/"
},
{
"desciption" : "tutorials",
"URL" : "https://www.digitalocean.com/community/tutorials"
}
],
"social_media" : [
{
"description" : "twitter",
"link" : "https://twitter.com/digitalocean"
},
{
"description" : "facebook",
"link" : "https://www.facebook.com/DigitalOceanCloudHosting"
},
{
"description" : "github",
"link" : "https://github.com/digitalocean"
}
]
}"Websites" ve "social_media" anahtarlarının her biri, Sammy'nin iki web sitesi bağlantısı ve üç sosyal medya profili bağlantısı hakkında bilgi tutmak için bir dizi kullanır. Köşeli parantez kullanımından bunların dizi olduğunu anlayabilirsiniz.
JSON formatında iç içe yerleştirmeyi kullanmak daha karmaşık ve hiyerarşik verilerle çalışmanıza olanak tanır.
JSON'u XML ile karşılaştırma
XML veya Genişletilebilir İşaretleme Dili, hem insanlar hem de makineler tarafından okunabilen erişilebilir verileri depolamanın bir yoludur. XML biçimi birçok programlama dilinde kullanılabilir.
XML birçok yönden JSON'a benzer, ancak çok daha fazla metin gerektirir ve okunması ve yazılması daha uzun ve zaman alıcıdır. XML'in de bir XML ayrıştırıcısı ile ayrıştırılması gerekirken, JSON standart bir işlevle ayrıştırılabilir. Ayrıca, JSON'ın aksine XML dizileri kullanamaz.
İşte XML formatının bir örneği:
<users>
<user>
<username>SammyShark</username> <location>Indian Ocean</location>
</user>
<user>
<username>JesseOctopus</username> <location>Pacific Ocean</location>
</user>
<user>
<username>DrewSquir</username> <location>Atlantic Ocean</location>
</user>
<user>
<username>JamieMantisShrimp</username> <location>Pacific Ocean</location>
</user>
</users>Şimdi aynı veriyi JSON formatında karşılaştıralım:
{"users": [
{"username" : "SammyShark", "location" : "Indian Ocean"},
{"username" : "JesseOctopus", "location" : "Pacific Ocean"},
{"username" : "DrewSquid", "location" : "Atlantic Ocean"},
{"username" : "JamieMantisShrimp", "location" : "Pacific Ocean"}
] }JSON çok daha kompakttır ve kapanış etiketleri gerektirmezken, XML gerektirir. Ayrıca, XML bu JSON örneğindeki gibi diziler kullanmaz (bunu köşeli parantez kullanımından anlayabilirsiniz).
HTML'ye aşinaysanız, XML'in etiket kullanımında oldukça benzer olduğunu fark edeceksiniz. JSON, XML'den daha ince ve ayrıntılı olup AJAX uygulamaları da dahil olmak üzere birçok durumda kullanımı daha hızlı olsa da, hangi veri yapılarını kullanacağınıza karar vermeden önce üzerinde çalıştığınız projenin türünü bilmeniz gerekir.
Sonuç
JSON, verileri paylaşmanıza, depolamanıza ve verilerle çalışmanıza olanak tanıyan hafif bir formattır. Bir format olarak JSON, Twitter API'si de dahil olmak üzere API'lerde giderek daha fazla destek görmektedir. JSON ayrıca JavaScript'te kullanım için doğal bir formattır ve çeşitli popüler programlama dillerinde kullanım için birçok uygulaması vardır. Dil desteğinin tamamını "JSON Tanıtımı" sitesinde okuyabilirsiniz.
Muhtemelen kendi .json dosyalarınızı oluşturmayacağınız, bunun yerine başka kaynaklardan edineceğiniz için, JSON yapısı hakkında daha az düşünmeniz ve uygulamalarınızda JSON'u en iyi şekilde nasıl kullanacağınıza odaklanmanız önemlidir. Örneğin, açık kaynaklı Mr. Data Converter aracını kullanarak, elektronik tablo uygulamalarında bulabileceğiniz CSV veya sekmeyle ayrılmış verileri JSON'a dönüştürebilirsiniz. Ayrıca, Creative Commons lisanslı Utilities-online.info sitesini kullanarak XML'i JSON'a veya tersini de dönüştürebilirsiniz.
Son olarak, diğer veri tiplerini JSON'a çevirirken veya kendi tipinizi oluştururken JSON'unuzu JSONLint ile doğrulayabilir ve JSON'unuzu JSFiddle ile web geliştirme bağlamında test edebilirsiniz.









