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?

Çözüm

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:

  • İsim/değer çiftlerinden oluşan bir koleksiyon. Çeşitli dillerde, bu bir nesne, kayıt, yapı, sözlük, karma tablo, anahtarlı liste veya ilişkisel dizi olarak gerçekleştirilir.
  • 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:

{
     "firstName": "John",
     "lastName": "Smith",
     "address": {
         "streetAddress": "21 2nd Street",
         "city": "New York",
         "state": "NY",
         "postalCode": 10021
     },
     "phoneNumbers": [
         "212 555-1234",
         "646 555-4567"
     ]
 }

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 JSON

JSON 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):

//The callback function that will be executed once data is received from the server
var callback = function (result) {
    var johnny = JSON.parse(result);
    //Now, the variable 'johnny' is an object that contains all of the properties 
    //from the above code snippet (the json example)
    alert(johnny.firstName + ' ' + johnny.lastName); //Will alert 'John Smith'
};

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:

var anObject = {name: "Andreas", surname : "Grech", age : 20};
var jsonFormat = JSON.stringify(anObject);
//The above method will output this: {"name":"Andreas","surname":"Grech","age":20}

Yukarıdaki iki yöntem (parse ve stringify) 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

Yorumlar (9)

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.

Yorumlar (0)

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

"{ \"FirstName\" : \"Fred\", \"LastName\" : \"Flintstone\" }"

Javascript ile yazabilirsiniz

var obj = eval("(" + someAjaxFunctionCallReturningJson().value + ")");
alert(obj.FirstName);
alert(obj.LastName);

JSON, web hizmeti yükleri ve diğerleri için de kullanılabilir, ancak AJAX sonuçları için gerçekten uygundur.

  • Güncelleme (on yıl sonra): Bunu yapmayın, JSON.parse kullanın
Yorumlar (2)