close

JSON

Navigasyona git Aramaya git
JSON
JSON vektör logosu.svg
https://json.org/ , https://json.org/json-fr.html ve https://json.org/json-it.html
Genel bilgi
Dosya uzantısı .json
mim tipi application/json
biçim türü işaretleme dili
uzatılmış javascript
Standart(lar) STD 90 ( RFC  8259), ECMA-404 , ISO/IEC 21778:2017
açık biçim Evet 
Image
Crockford, JSON'u belirleyen ve popülerleştiren ilk kişiydi.

JSON ( JavaScript Object Notation ), veri alışverişi için basit bir metin biçimidir. JavaScript nesne değişmez gösteriminin bir alt kümesidir , ancak XML'e alternatif olarak geniş çapta benimsenmesi nedeniyle dilden bağımsız bir biçim olarak kabul edilir.

JSON'un bir veri değişim formatı olarak XML'e göre varsayılan avantajlarından biri, bunun için bir ayrıştırıcı yazmanın çok daha kolay olmasıdır. JavaScript'te, bir JSON metni, işlev kullanılarak kolayca ayrıştırılabilir; eval()bu, (JavaScript'in hemen hemen her web tarayıcısında her yerde bulunması nedeniyle) AJAX geliştirici topluluğu tarafından kabul edilmesinde etkili olmuştur .

Pratikte, eval()modern tarayıcılarda yerleşik yerel XML işlemenin kullanımı ve yükselişi nedeniyle ortaya çıkan güvenlik sorunları nedeniyle, ayrıştırıcıların geliştirme kolaylığı veya performanslarına ilişkin argümanlar çok az alakalıdır. Bu nedenle, JSON, istemci ve sunucu arasındaki veri akışının boyutunun çok önemli olduğu ortamlarda (dolayısıyla milyonlarca kullanıcıya hizmet veren Yahoo! , Google , Mozilla vb. güvenilen ve istemcideki verileri işlemek için XSLT işlemenizin olmamasının önemli olmadığı yerlerde .

JSON, XML'e bir alternatif olarak görülme eğiliminde olsa da , gerçek şu ki, JSON ve XML'in aynı uygulamada kullanılması nadir değildir ; bu nedenle, Google Haritalar'dan gelen verileri hava durumu verileriyle SOAP'ta ( Basit Nesne Erişim Protokolü ) entegre eden bir istemci uygulamasının her iki biçimi de kullanması gerekir.

Aralık 2005'te Yahoo! bazı web servislerinde isteğe bağlı JSON desteği vermeye başladı . [ 1 ]

İsim ve telaffuz

İngilizce'de JSON, J harfinin adı gibi ( jay , / yéi /) ve ardından hece "son" gibi kısaltmalarla telaffuz edilir. İlk vurgulu hece (/yéison/) ile olağan sonuç, Jason adıyla aynı şekilde telaffuz edilir, ancak JSON formatının geliştiricisi Douglas Crockford ikinci heceyi /yeisón/ olarak vurgular. [ 2 ]

İspanyolca'da JSON'un bir kısaltma olduğunu ve bazen bunları telaffuz etmenin tek bir yolu olmadığını unutmayın. Ortografik norma göre, [ 3 ] normal olan şey onu /jotasón/ olarak telaffuz etmek olacaktır. Bazıları onu /jason/ olarak telaffuz eder, ancak kısaltmada (JASON) olmayan bir harf daha ekleyerek kısaltmanın telaffuzundan daha da uzaklaşır ve bu nedenle yanlış bir telaffuz olur.

Dilbilimci olmayan bazı kişiler İspanyolca kısaltmayı İngilizce olarak telaffuz etmeyi tercih ederler, [ 4 ] ancak bu onu daha doğru yapmaz, daha çok Amerikan Spanglish'i için daha tipik olur . FBI, İspanyolca'da /éfbiai/ olarak telaffuz edilmez, tıpkı CIA'den bahsederken /síaiei/'nin telaffuz edilmemesi gibi. İngilizce kısaltması ASAP ( en kısa sürede ) İspanyolca'da /eieseipi/ olarak değil, dil ekonomisi için /asap/ olarak telaffuz edilir. İspanyolca kurallarına göre, "jotasón/ jotasones " olarak sözlükselleştirilebilir, ancak akademik metinlerde kullanımı yoktur.

Sözdizimi

JSON ile kullanılabilen veri türleri şunlardır:

  • Sayılar: Negatif sayılara izin verilir ve isteğe bağlı olarak noktalarla ayrılmış bir kesirli kısım içerebilir. Örnek: 123.456
  • Dizeler: Sıfır veya daha fazla karakterden oluşan dizileri temsil eder. Çift tırnak içine alınırlar ve kaçış dizelerine izin verilir. Örnek:"Hola"
  • Boolean : Boolean değerlerini temsil ederler ve iki değere sahip olabilirler: truevefalse
  • null: Boş değeri temsil eder.
  • Dizi : Herhangi bir türden olabilen sıfır veya daha fazla değerden oluşan sıralı bir listeyi temsil eder. Değerler virgülle ayrılır ve vektör köşeli parantez içine alınır. Örnek["juan","pedro","jacinto"]
  • Nesneler: Bunlar, virgülle ayrılmış ve parantez içine alınmış <ad>:<değer> biçimindeki sırasız çift koleksiyonlarıdır. Ad, çift tırnak içine alınmış bir dize olmalıdır. Değer herhangi bir türden olabilir. Örnek:
{ 
  "departman" : 8 , 
  "deptname" : "Satış" , 
  "yönetici" :  "Juan Rodriguez" , 
  "çalışanlar" :[ 
    { 
      " ad" : "Pedro" , 
      "soyad" : "Fernández" 
    },{ 
      "isim " : "Jacinto" , 
      "soyadı" : "Benavente" 
    }  
  ] 
}

İşleme modelleri

JSON veri alışverişi için yaygın olarak kullanılan bir format olduğundan farklı diller için (örneğin ActionScript , C , C++ , C# , ColdFusion , Common Lisp , Delphi , E , Eiffel , Java , JavaScript , ML , Objective- API'ler geliştirilmiştir. C , Objective CAML , Perl , PHP , Python , Rebol , Ruby , Lua ve Visual FoxPro ) bu tür verileri ayrıştırmanıza, oluşturmanıza, dönüştürmenize ve işlemenize izin verir.

Farklı dillerde JSON ile başa çıkmak için en çok kullanılan programlama modelleri şunlardır: [ 5 ]

  • Nesne modeli.- JSON'un tamamı bellekte bir ağaç biçiminde saklanır. Bu ağaç, uygun API'lerle taranır, ayrıştırılır ve değiştirilir. Her şeyi belleğe yüklediği ve ardından işlediği için bu model çok fazla kaynak tüketir. Ancak içeriği değiştirmek çok esnektir. Bu modele örneğin Java'da JSR 353 ve Jackson kitaplığı tarafından izin verilir .
  • Akış modeli: Veriler bloklar halinde okunur veya yazılır. Örneğin, bir blok her okunduğunda, ayrıştırıcı ne tür bir blok olduğunu belirtmek için uygun olaylar üretir. Müşteri, uygun olayları dinleyerek içeriği işleyebilir. Ayrıca, JSON'un nasıl okunacağına karar veren, içeriğin sürecin ortasında durdurulmasına veya atlanmasına izin veren müşteridir. Yazma işlemi benzer özelliklere sahiptir. Örneğin, bu modele Java'da JSR 353 tarafından izin verilir.
  • JSON nesnelerini dil nesnelerine dönüştürme. Java'da bu, örneğin Jackson ve Gson kitaplıkları tarafından yapılır .

JSON'u kullanma

Teoride, JSON.parse()dilin yerleşik işlevini kullanarak JSON'u JavaScript'e ayrıştırmak önemsizdir. Örneğin:

myObject  =  JSON . ayrıştırma ( json_data );

Uygulamada, güvenlik hususları genellikle ham verilerde eval kullanımına karşı dikte eder ve güvenliği sağlamak için ayrı bir JavaScript ayrıştırıcısı kullanılmalıdır. JSON.org tarafından sağlanan ayrıştırıcı, onu eval()ayrıştırma işlevinde kullanır ve işlevin yalnızca güvenli ifadeleri görmesi için düzenli bir ifadeyle korur.

XMLHttpRequest kullanılarak JSON veri erişimine bir örnek :

var  http_request  =  new  XMLHttpRequest (); 
var  url  =  "http://example.net/jsondata.php" ;  // Bu URL, JSON verilerini döndürmelidir
 
// JSON verilerini sunucudan indirin. 
http_request . onreadystatechange  =  handle_json ; 
http_request . open ( "GET" ,  url ,  true ); 
http_request . gönder ( boş );
 
function  handle_json ()  { 
  if  ( http_request . readyState  ==  4 )  { 
    if  ( http_request . status  ==  200 )  { 
      var  json_data  =  http_request . tepkiMetni ;  
      var  the_object  =  eval ( "("  +  json_data  +  ")" ); 
    }  else  { 
      uyarı ( "URL ile ilgili bir sorun oluştu." ); 
    } 
    http_request  =  boş ; 
  } 
}

Internet Explorer , Opera , Safari ve Mozilla tabanlı tarayıcılar için sözdizimsel varyasyonlar bulunduğundan, bu örnekte XMLHttpRequest kullanımının tüm tarayıcılar tarafından desteklenmediğini unutmayın . [ 6 ]

<iframe>Verileri eşzamansız olarak istemek için gizli öğeleri kullanmak veya istekleri kullanmak da mümkündür <form target="url_to_cgi_script" />. Bu yöntemler, XMLHttpRequest'in yaygın kullanımının ortaya çıkmasından önce en yaygın olanlardı.

İstemci ve sunucu arasında her iki şekilde iletişim için JSON sözdizimi ile .NET sınıflarını dışa aktaran .NET çerçevesi için bir kitaplık [ 7 ]​ vardır.

JSON örneği

Aşağıda, JSON ve XML kullanan basit bir menü çubuğu tanımı örneği verilmiştir.

JSON:

{ 
    "menu" :  { 
        "id" :  "dosya" , 
        "değer" :  "Dosya" , 
        "açılır pencere" :  { 
            "menü öğeleri" :  [ 
                { 
                    "değer" :  "Yeni" ,  "onclick" :  "CreateNewDoc()" 
                },{ 
                    "değer" :  "Aç" ,  "onclick" :  "OpenDoc()" 
                },{ 
                    "değer" :  "Kapat" ,  "onclick" :  "CloseDoc()" 
                } 
            ] 
        } 
    } 
}

Aşağıdaki XML'in olası bir JSON temsilidir:

  <menu  id= "dosya"  değer= "Dosya" > 
    <popup> 
      <menuitem  değer= "Yeni"  onclick= "CreateNewDoc()"  /> 
      <menuitem  değer= "Aç"  onclick= "OpenDoc()"  /> 
      <menuitem  value= "Kapat"  onclick= "CloseDoc()"  /> 
    </popup> 
  </menu>

XML ve diğer biçimlendirme dilleriyle karşılaştırma

Sunucu tarafında, çoğu ortam için en az bir ayrıştırıcı ile birçok JSON ayrıştırıcısı vardır. Java veya PHP gibi bazı dillerde, aralarından seçim yapabileceğiniz farklı uygulamalar vardır. JavaScript'te, ayrıştırma yerel olarak JSON.parse(). Her iki formatta da ikili büyük nesneleri temsil edecek bir mekanizma yoktur .

XML karşılaştırmasından bağımsız olarak, JSON etkin bir şekilde kullanıldığında çok kompakt ve verimli olabilir. Örneğin, "BarracudaDrive" (İngilizce) içindeki DHTML uygulamasını arayın . 21 Mayıs 2006'da orijinalinden arşivlendi . dizin listelerini sunucudan JSON olarak alır. Bu arama uygulaması, sunucuyu sürekli olarak yeni dizinler için sorgular ve yavaş bir bağlantıda bile oldukça hızlıdır.  

Sunucu tarafı ortamlar genellikle yerleşik bir JSON ayrıştırıcı nesnesi veya işlevi gerektirir. Bazı programcılar, özellikle de C diline aşina olanlar , JSON'u XML'den daha doğal bulurlar, ancak diğer geliştiriciler, özellikle yüksek oranda iç içe veya derinden iç içe geçmiş verilerle uğraşırken, kısa gösterimini biraz kafa karıştırıcı bulur.

JSON.org'da JSON ve XML arasında daha fazla karşılaştırma var [ 8 ]

YAML , bazı sınırlamalarının üstesinden gelmeye çalışan bir JSON üst kümesidir. Önemli ölçüde daha karmaşık olmasına rağmen [ 9 ] yine de hafif olarak kabul edilebilir. Ruby programlama dili , varsayılan serileştirme biçimi olarak YAML'yi kullanır. Böylece JSON'u oldukça basit bir şekilde ele almak mümkündür.

Ayrıca

Referanslar

  1. Yahoo! . «JSON'u Yahoo ile Kullanma! Web hizmetleri » . 6 Ocak 2010 tarihinde kaynağından arşivlendi . Erişim tarihi: 2 Mart 2010 . 
  2. ^ "Doug Crockford "Google Tech Talks: JavaScript: İyi Parçalar " " . 7 Şubat 2009. 
  3. RAE. «kısaltma | Pan-İspanyolca Şüphe Sözlüğü» . "Şüphe Pan-Hispanik Sözlüğü" . 25 Haziran 2021'de alındı . 
  4. Kapıç, Edin (15 Nisan 2016). «“Jotason” ve bilgisayar terimlerinin (kötü) telaffuzu” . EdinKapic.com . 2 Eylül 2018'de alındı . 
  5. RESTful Java Web Servisleri. Jobinesh Purushothaman. Packt Yayıncılık 2015. İkinci Baskı
  6. ".json Dosya Uzantısı: JSON dosyaları ne işe yarar?" . açık dosyalar 22 Ekim 2021'de alındı . 
  7. http://ajax.schwarz-interactive.de 7 Mart 2011'de Wayback Machine'de arşivlendi .
  8. "Örnek sayfa" . JSON.org (İngilizce) . 
  9. Ippolito, Bob (19 Temmuz 2005). "YAML'ye ne oldu?" (İngilizce olarak) . 14 Şubat 2012 tarihinde kaynağından arşivlendi . 2012-11-22 alındı . 

Dış bağlantılar

öğreticiler
  • AJAX XML, JSON ve Javascript nesneleri arasında XML Karşılaştırması olmadan
  • AJAX'ı JSON ile Hızlandırma XML yerine JSON'a başvurmanın ne kadar kolay olduğunu gösterir
  • AJAX İletişimi - JSON ile PHP Bir PHP dosyasına başvurarak AJAX'ta nasıl bilgi alınacağını gösterir. Özel karakter sorununu hesaba katar. (ispanyolca'da)
  • JSON ile web için animasyonlar After Effects ile animasyonların JSON biçiminde nasıl dışa aktarılacağını gösterir (İspanyolca)