Daha
JSON nedir ve neden kullanmalıyım?
Vikipedi'ye baktım, Google'da araştırdım ve resmi belgeleri okudum, ancak hala JSON'un ne olduğunu ve neden kullanacağımı gerçekten anladığım bir noktaya gelemedim.
Bir süredir PHP, MySQL ve Javascript / HTML kullanarak uygulamalar geliştiriyorum ve JSON hayatımı kolaylaştıracak veya kodumu daha iyi hale getirecek veya kullanıcı arayüzümü daha iyi hale getirecek bir şey yapabiliyorsa, bunu bilmek isterim. Birisi bana kısa ve öz bir açıklama yapabilir mi?
524
3
JSON (JavaScript Object Notation) veri alışverişi için kullanılan hafif bir formattır. JavaScript dilinin bir alt kümesine dayanır (JavaScript'te nesnelerin oluşturulma şekli). MDN'de belirtildiği gibi]1, bazı JavaScript'ler JSON değildir ve bazı JSON'lar da JavaScript değildir. Bunun kullanıldığı yerlere bir örnek web hizmetleri yanıtlarıdır. Eski günlerde, web hizmetleri verileri geri iletmek için birincil veri biçimi olarak XML kullanıyordu, ancak JSON ortaya çıktığından beri (JSON biçimi Douglas Crockford tarafından RFC 4627'de belirtilmiştir), çok daha hafif olduğu için tercih edilen biçim olmuştur. Resmi JSON web sitesinde çok daha fazla bilgi bulabilirsiniz. JSON iki yapı üzerine kurulmuştur:
Sıralı bir değer listesi. Çoğu dilde, bu bir dizi, vektör, liste veya sıra olarak gerçekleştirilir.
JSON Yapısı
İşte bir JSON veri örneği:
JavaScript'te JSON
JSON (Javascript'te) bir dizedir! İnsanlar genellikle tüm Javascript nesnelerinin JSON olduğunu ve JSON'un bir Javascript nesnesi olduğunu varsayarlar. Bu yanlıştır. Javascript'te
var x = {x:y}
JSON değildir, bu bir Javascript nesnesidir. İkisi aynı şey değildir. JSON eşdeğeri (Javascript dilinde temsil edilen)var x = '{"x":"y"}'
şeklinde olacaktır. xkendi başına bir nesne değil **string** türünde bir nesnedir. Bunu tam teşekküllü bir Javascript nesnesine dönüştürmek için önce ayrıştırmanız gerekir,
var x = JSON.parse('{"x":"y"}');,
x` artık bir nesnedir ancak bu artık JSON değildir. Bakınız Javascript object Vs JSONJSON ve JavaScript ile çalışırken, geri aramada döndürülen sonucu değerlendirmek için
eval
işlevini kullanmak cazip gelebilir, ancak JSON'da geçerli olan ancak JavaScript'te geçerli olmayan iki karakter (U+2028 & U+2029) olduğundan bu önerilmez (daha fazlasını okuyun burada). Bu nedenle, değerlendirmeden önce geçerli bir JSON olup olmadığını kontrol eden Crockford'un betiği her zaman kullanılmaya çalışılmalıdır. Betik açıklamasının bağlantısı burada ve burada js dosyasına doğrudan bağlantı bulunmaktadır. Günümüzde her büyük tarayıcı bunun için kendi uygulamasına sahiptir. JSON ayrıştırıcısının nasıl kullanılacağına dair örnek (yukarıdaki kod parçacığındaki json ile):JSON ayrıştırıcı ayrıca
stringify
adında çok kullanışlı bir yöntem daha sunar. Bu yöntem bir JavaScript nesnesini parametre olarak kabul eder ve JSON formatında bir dize çıktısı verir. Bu, verileri sunucuya geri göndermek istediğinizde kullanışlıdır:Yukarıdaki iki yöntem (
parse
vestringify
) ayrıca ikinci bir parametre alır; bu parametre, nihai sonucun her düzeyindeki her anahtar ve değer için çağrılacak bir işlevdir ve her değer, girdiğiniz işlevin sonucuyla değiştirilir. (Bu konuda daha fazla bilgi burada) Bu arada, JSON'un sadece JavaScript için olduğunu düşünen herkes için, aksini açıklayan ve doğrulayan bu yazıya göz atın.Referanslar
JSON, JavaScript Nesne Gösterimidir. XML ile karşılaştırıldığında ağ bağlantıları üzerinden veri kümelerini iletmenin çok daha kompakt bir yoludur. XML'in "önerilen" seçenek olacağı AJAX benzeri uygulamalarda JSON kullanılmasını öneririm. XML'in karmaşıklığı indirme süresini ve bant genişliği tüketimini ($$$) artıracaktır. Aynı etkiyi JSON ile de elde edebilirsiniz ve JSON'un biçimlendirmesi neredeyse sadece verinin kendisine adanmıştır, altta yatan yapıya değil.
genel kısa cevap şudur: veri istekleri yapmak için AJAX kullanıyorsanız, nesneleri JSON dizeleri olarak kolayca gönderebilir ve döndürebilirsiniz. Javascript için mevcut uzantılar, bir AJAX isteğinde sunucuya veri göndermek için tüm javascript türlerinde toJSON() çağrılarını destekler. AJAX yanıtları, basit bir eval çağrısıyla Javascript nesnelerine dönüştürülebilen JSON dizeleri olarak nesneler döndürebilir, örneğin someAjaxFunctionCallReturningJson adlı AJAX işlevi
Javascript ile yazabilirsiniz
JSON, web hizmeti yükleri ve diğerleri için de kullanılabilir, ancak AJAX sonuçları için gerçekten uygundur.