JSON nedir? Veri alışverişi için daha iyi bir format

JavaScript Nesne Gösterimi, anahtar / değer çiftlerine ve sıralı listelere dayanan yapılandırılmış verilerin şemasız, metin tabanlı bir temsilidir. JSON, JavaScript'ten türetilmiş olmasına rağmen, yerel olarak veya çoğu büyük programlama dilinde kitaplıklar aracılığıyla desteklenir. JSON, yalnızca değil, genel olarak web istemcileri ve web sunucuları arasında bilgi alışverişinde bulunmak için kullanılır. 

Son 15 yılda JSON, web'de her yerde yaygın hale geldi. Bugün, halka açık hemen hemen her web hizmeti için tercih edilen formattır ve ayrıca özel web hizmetleri için de sıklıkla kullanılmaktadır.

JSON'un popülaritesi, birçok veritabanı tarafından yerel JSON desteğiyle sonuçlandı. PostgreSQL ve MySQL gibi ilişkisel veritabanları artık JSON verilerini depolamak ve sorgulamak için yerel destekle birlikte geliyor. MongoDB ve Neo4j gibi NoSQL veritabanları da JSON'u destekler, ancak MongoDB perde arkasında biraz değiştirilmiş, ikili bir JSON sürümü kullanır.

Bu makalede, JSON'a hızlı bir şekilde bakacağız ve nereden geldiğini, XML'e göre avantajlarını, sakıncalarını, ne zaman kullanmanız gerektiğini ve ne zaman alternatifleri düşünmeniz gerektiğini tartışacağız. Ama önce JSON'un pratikte neye benzediğinin ayrıntılarına girelim.

JSON örneği

JSON'da kodlanmış bir veri örneği aşağıda verilmiştir:

{

  "FirstName": "Jonathan",

  "LastName": "Freeman",

  "LoginCount": 4,

  "İsWriter": true,

  "WorksWith": ["Spantree Technology Group", ""],

  "Evcil Hayvanlar": [

    {

      "Ad": "Lilly",

      "Type": "Rakun"

    }

  ]

}

Yukarıdaki yapı, bir kişinin bazı özelliklerini açıkça tanımlamaktadır. Bir adı ve soyadı, kişinin giriş yaptığı sayı, bu kişinin yazar olup olmadığı, kişinin birlikte çalıştığı şirketlerin bir listesini ve kişinin evcil hayvanlarının bir listesini (bu durumda yalnızca bir tane) içerir. Yukarıdakine benzer bir yapı, bir sunucudan bir web tarayıcısına veya bir mobil uygulamaya geçirilebilir, bu daha sonra verileri görüntülemek veya daha sonra başvurmak üzere kaydetmek gibi bazı eylemleri gerçekleştirecektir.

JSON, minimum sayıda değer türüne sahip genel bir veri formatıdır: dizeler, sayılar, mantıksal değerler, listeler, nesneler ve boş. Gösterim, JavaScript'in bir alt kümesi olmasına rağmen, bu türler tüm yaygın programlama dillerinde temsil edilir ve JSON'u dil boşluklarında veri iletimi için iyi bir aday yapar.

JSON dosyaları

JSON verileri .json uzantısıyla biten dosyalarda saklanır. JSON'un insan tarafından okunabilir değerlerine uygun olarak, bunlar sadece düz metin dosyalarıdır ve kolayca açılıp incelenebilir. SQLizer blogunun açıkladığı gibi, bu aynı zamanda JSON'un daha geniş birlikte çalışabilirliğinin de bir anahtarıdır, çünkü adlandırabileceğiniz hemen hemen her dil düz metin dosyalarını okuyabilir ve işleyebilir ve bunlar İnternet üzerinden gönderilmesi kolaydır.

Neden JSON kullanmalıyım? 

JSON'un yararlılığını ve önemini anlamak için, web'deki etkileşim geçmişini biraz anlamamız gerekecek. 

2000'lerin başında, web üzerindeki etkileşim dönüşmeye başladı. O zamanlar, tarayıcı bilgileri görüntülemek için esasen aptal bir istemci olarak hizmet ediyordu ve sunucu, içeriği görüntülenmeye hazırlamak için tüm zor işi yaptı. Bir kullanıcı tarayıcıdaki bir bağlantıya veya düğmeye tıkladığında, sunucuya bir istek gönderilir, sunucu gerekli bilgileri HTML olarak hazırlar ve tarayıcı HTML'yi yeni bir sayfa olarak işler. Bu kalıp yavaş ve verimsizdi, tarayıcının sayfanın yalnızca bir bölümü değişmiş olsa bile sayfadaki her şeyi yeniden oluşturmasını gerektiriyordu.

Tam sayfa yeniden yüklemeler maliyetli olduğundan, web geliştiricileri genel kullanıcı deneyimini iyileştirmek için daha yeni teknolojilere yöneldi. Bu arada, kısa süre önce Internet Explorer 5'te tanıtılan bir sayfa gösterilirken arka planda web isteklerinde bulunma yeteneği, görüntüleme için artımlı olarak veri yüklemeye uygun bir yaklaşım olduğunu kanıtlıyordu. Sayfanın tüm içeriğini yeniden yüklemek yerine, yenile düğmesine tıklamak, arka planda yüklenecek bir web isteğini tetikler. İçerikler yüklendiğinde veriler değiştirilebilir, kaydedilebilir ve tarayıcılardaki evrensel programlama dili olan JavaScript kullanılarak sayfada görüntülenebilir.

REST ve SOAP: JSON bağlantısı

Başlangıçta bu veriler, SOAP (Basit Nesne Erişim Protokolü) adı verilen bir mesajlaşma protokolü kullanılarak XML formatında (bir örnek için aşağıya bakın) aktarıldı. Ancak XML ayrıntılı ve JavaScript'te yönetilmesi zordu. JavaScript zaten dil içinde verileri ifade etmenin bir yolu olan nesnelere sahipti, bu yüzden Douglas Crockford bu ifadenin bir alt kümesini yeni bir veri değişim formatı için bir özellik olarak aldı ve buna JSON adını verdi. JSON, insanların okuması ve tarayıcıların ayrıştırması için çok daha kolaydı.

00'lı yıllar boyunca, Temsili Durum Transferi veya REST olarak adlandırılan başka bir Web hizmetleri teknolojisi, veri aktarımı amacıyla SOAP'ı geçmeye başladı. REST API'leri kullanarak programlamanın en büyük avantajlarından biri, birden çok veri formatını kullanabilmenizdir - yalnızca XML değil, JSON ve HTML de. Web geliştiricileri XML yerine JSON'u tercih etmeye başladıkça, SOAP yerine REST'i tercih ettiler. Kostyantyn Kharchenko'nun Svitla blogunda belirttiği gibi, "Birçok yönden, REST'in başarısı, çeşitli platformlarda kolay kullanımı nedeniyle JSON formatından kaynaklanıyor."

Bugün, JSON, web ve mobil istemciler ile arka uç hizmetler arasında veri alışverişi için fiili standarttır. 

JSON ve XML

Yukarıda belirtildiği gibi, JSON'un ana alternatifi XML'dir. Bununla birlikte, XML yeni sistemlerde gittikçe daha az yaygın hale geliyor ve nedenini anlamak kolay. Aşağıda yukarıda gördüğünüz verilerin bir versiyonu, bu sefer XML olarak verilmiştir:

  Jonathan

  Özgür adam

  4

  doğru

    Spantree Teknoloji Grubu

      Lilly

      Rakun

XML, daha ayrıntılı olmasının yanı sıra (bu durumda tam olarak iki kat daha ayrıntılı), JavaScript dostu bir veri yapısına ayrıştırırken bazı belirsizlikler de getirir. XML'i bir JavaScript nesnesine dönüştürmek onlarca kod satırından yüzlerce satıra kadar sürebilir ve nihayetinde ayrıştırılan belirli nesneye göre özelleştirme gerektirir. JSON'u bir JavaScript nesnesine dönüştürmek, bir satır kod alır ve ayrıştırılan nesne hakkında herhangi bir ön bilgi gerektirmez.

JSON sınırlamaları

JSON, birçok programlama dilinde birlikte çalışması kolay, nispeten kısa, esnek bir veri formatı olmasına rağmen, formatın bazı dezavantajları vardır. İşte beş ana sınırlama: 

  1. Şema yok. Bir yandan, verileri istediğiniz şekilde temsil etmek için tam esnekliğe sahip olduğunuz anlamına gelir. Öte yandan, yanlışlıkla biçimsiz verileri çok kolay bir şekilde oluşturabileceğiniz anlamına gelir.
  2. Yalnızca bir sayı türü: IEEE-754 çift duyarlıklı kayan nokta biçimi. Bu oldukça ağız doludur, ancak basitçe, birçok programlama dilinde mevcut olan çeşitli ve incelikli sayı türlerinden yararlanamayacağınız anlamına gelir.
  3. Tarih türü yok. Bu ihmal, geliştiricilerin tarihlerin dize gösterimlerini kullanmaya başvurmaları gerektiği, bu da biçimlendirme tutarsızlıklarına yol açmaları veya dönemden (1 Ocak 1970) beri tarihleri ​​milisaniye biçiminde temsil etmeleri gerektiği anlamına gelir.
  4. Yorum yok. Bu, alanlara satır içi açıklama eklemeyi imkansız kılar, ek dokümantasyon gerektirir ve yanlış anlama olasılığını artırır.
  5. Ayrıntı. JSON, XML'den daha az ayrıntılı olsa da, en kısa veri değişim biçimi değildir. Yüksek hacimli veya özel amaçlı hizmetler için daha verimli veri formatlarını kullanmak isteyeceksiniz.

JSON'u ne zaman kullanmalıyım?

Bir tarayıcı veya yerel mobil uygulama ile iletişim kuran bir yazılım yazıyorsanız, veri formatı olarak JSON kullanmalısınız. XML gibi bir format kullanmak güncel olmayan bir seçimdir ve aksi takdirde çekmek isteyeceğiniz ön uç ve mobil yetenek için kırmızı bir bayraktır.

Sunucudan sunucuya iletişim durumunda, Apache Avro veya Apache Thrift gibi bir serileştirme çerçevesi kullanmanız daha iyi olabilir. JSON burada kötü bir seçim değil ve yine de tam olarak ihtiyacınız olan şey olabilir, ancak cevap web ve mobil iletişim için olduğu kadar net değil.

NoSQL veritabanları kullanıyorsanız, veritabanının size verdiği her şeye bağlı kalırsınız. JSON'u bir tür olarak destekleyen ilişkisel veritabanlarında, mümkün olduğunca az kullanmak iyi bir pratik kuraldır. İlişkisel veritabanları, belirli bir şemaya uyan yapılandırılmış veriler için ayarlanmıştır. Çoğu artık JSON biçiminde daha esnek verileri desteklese de, bu JSON nesnelerindeki mülkleri sorgularken performansın yükselmesini bekleyebilirsiniz.

JSON, web sunucuları ile tarayıcılar ve mobil uygulamalar arasında veri göndermek için her yerde bulunan fiili formattır. Basit tasarımı ve esnekliği, okumayı ve anlamayı ve çoğu durumda, seçtiğiniz programlama dilinde yönetmeyi kolaylaştırır. Katı bir şema olmaması, biçimin esnekliğini sağlar, ancak bu esneklik bazen JSON'u doğru bir şekilde okuyup yazdığınızdan emin olmanızı zorlaştırır.

JSON ayrıştırıcı

Bir uygulamanın kodunun JSON olarak depolanan verileri uygulamanın kullanabileceği bir biçime dönüştüren kısmına ayrıştırıcı adı verilir . JavaScript, beklediğiniz gibi, JSON.parse () yöntemi olan yerel bir ayrıştırıcı içerir.

JSON ile Scala veya Elm gibi güçlü yazılmış dillerde çalışmak için biraz daha fazla iş yapmanız gerekebilir, ancak JSON'un yaygın bir şekilde benimsenmesi, en zor kısımların hepsinde size yardımcı olacak kitaplıklar ve yardımcı programlar olduğu anlamına gelir. 

Json.org web sitesi, JSON'u ayrıştırmak, oluşturmak ve işlemek için Python, C # ve COBOL gibi çeşitli dillerde kullanabileceğiniz kapsamlı bir kod kitaplıkları listesi içerir.

JSON yardımcı programları

JSON kodlu verileri doğrudan kendiniz kod yazmadan değiştirmek veya incelemek istiyorsanız, size yardımcı olabilecek bir dizi çevrimiçi yardımcı program vardır. Yukarıya bağlanan kod kitaplıklarındaki tüm programlı eşdeğerler, ancak JSON kodunu kesip bu tarayıcı tabanlı araçlara yapıştırarak JSON'u daha iyi anlamanıza veya hızlı ve kirli analizler gerçekleştirmenize yardımcı olabilir:

  • JSON Biçimlendiricisi: JSONLint, isteğe bağlı JSON kodunu biçimlendirecek ve doğrular.
  • JSON Görüntüleyici: Stack.hu, JSON kodunuzun yapısını anlamanıza yardımcı olacak etkileşimli bir ağaç oluşturacak bir siteye sahiptir. 
  • JSON Güzelleştirici: JSON kodunuzu sözdizimi renklendirmesi ve benzerleri ile "güzelce yazdırmak" istiyorsanız, Prettydiff size yardımcı olabilir. 
  • JSON Converter: Verileri bir JSON formatından başka bir şeye hızlıca taşımanız mı gerekiyor? Convertcsv.com, JSON'u CSV'ye (daha sonra Excel'de açılabilir) veya XML'e dönüştürebilen araçlara sahiptir.

JSON öğreticisi

Dalmaya ve etkileşimli uygulamalarınızda JSON ile nasıl çalışacağınız hakkında daha fazla bilgi edinmeye hazır mısınız? Mozilla Geliştirici Ağı, JSON ve JavaScript ile başlamanızı sağlayacak harika bir eğiticiye sahiptir. Diğer dillere geçmeye hazırsanız, JSON'u Java ile (Baeldung'dan), Python (DataCamp'tan) veya C # (Yazılım Test Yardımından) ile kullanma öğreticisine bakın. İyi şanslar!

Josh Fruhlinger bu makaleye katkıda bulundu.