JSON (JavaScript Nesne Gösterimi), veri alışverişi için kullanılan hafif bir biçimdir. JavaScript dilinin bir alt kümesine dayanır (nesnelerin JavaScript'te oluşturulma şekli). MDN'de belirtildiği gibi , bazı JavaScript JSON ve bazı JSON JavaScript değildir.
Bunun kullanıldığı yerlere örnek olarak web hizmetleri yanıtları verilebilir. 'Eski' günlerde web hizmetleri, verileri geri aktarmak için birincil veri biçimi olarak XML kullandı, ancak JSON göründüğünden ( JSON biçimi RFC 4627'de Douglas Crockford tarafından belirtildi ), çok daha fazla olduğu için tercih edilen biçimdi hafif
Resmi JSON web sitesinde çok daha fazla bilgi bulabilirsiniz .
JSON iki yapı üzerine kurulmuştur:
- Bir isim / değer çifti koleksiyonu. Çeşitli dillerde, bu bir nesne, kayıt, yapı, sözlük, karma tablosu, anahtarlı liste veya ilişkilendirilebilir dizi olarak gerçekleştirilir.
- Sıralı değerler listesi. Çoğu dilde bu bir dizi, vektör, liste veya dizi olarak gerçekleştirilir.
JSON Yapısı
JSON verilerinin bir ö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 varsayar. Bu yanlış.
In JavaScript var x = {x:y}
olduğunu JSON değil , bu bir JavaScript nesnesi . İkisi aynı şey değil. (Javascript dilinde temsil edilen) JSON eşdeğeri olacaktır var x = '{"x":"y"}'
. stringx
türünde bir nesne, kendi başına bir nesne değildir. Önce onu ayrıştırmak gerekir tam teşekküllü JavaScript nesnesine bu açmak için , şimdi bir nesnedir ama bu artık JSON değil.var x = JSON.parse('{"x":"y"}');
x
Bkz. Javascript nesnesi Vs JSON
JSON ve JavaScript ile çalışırken eval
, geri aramada döndürülen sonucu değerlendirmek için işlevi kullanmaya cazip gelebilirsiniz , ancak JSON'da geçerli olan ancak JavaScript'te olmayan iki karakter (U + 2028 ve U + 2029) olduğu için bu önerilmez. (daha fazlasını buradan okuyabilirsiniz ).
Bu nedenle, Crockford'un geçerli bir JSON'u kontrol etmeden önce komut dosyasını kullanmaya çalışması gerekir. Komut dosyası açıklama bağlantısı burada bulunur ve burada js dosyasına doğrudan bir bağlantı vardır . Günümüzde her büyük tarayıcının bunun için kendi uygulaması vardır .
JSON ayrıştırıcısının nasıl kullanılacağına ilişkin örnek (yukarıdaki kod snippet'indeki 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ısı başka bir çok yararlı yöntem de sunuyor stringify
. Bu yöntem, bir JavaScript nesnesini parametre olarak kabul eder ve JSON biçiminde bir dize döndürür. 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, nihai sonucun her düzeyinde her anahtar ve değer için çağrılacak bir işlev olan ikinci bir parametre alır ve her değer, girilen işlevinizin sonucu ile değiştirilir. ( Burada daha fazlası )
Btw, hepiniz dışarı ilişkin JSON bakın sadece JavaScript için orada düşünenler bu yazıyı başka türlü açıklıyor ve onaylar.
Referanslar