İçeriğe atla

JSON

Javascript Object Notation (JSON)
Javascript Nesne Notasyonu
Dosya uzantısı:.json
MIME kodu:application/json[1]
Standart:STD 90 (RFC 8259), ECMA-404, ISO/IEC 21778:2017

JSON ("JavaScript Object Notation"); bütün programlama dilleri arasında, yapılandırılmış veri değişimini kolaylaştıran bir metin biçimidir. Yay ayraç, köşeli ayraç, iki nokta ve virgüllü yazımı ile birçok bağlam ve uygulamada kullanışlıdır. ECMAScript Dil Şartnamesi (üçüncü sürümü)'nde tanımlandığı gibi JavaScript'te bulunan nesne değişmezlerinden esinlenilerek tasarlanmıştır. ECMAScript Programlama Dilinden türetilmiştir fakat programlama dilinden bağımsızdır.[2] JSON sahip olduğu ağaç yapısıyla DOM ve XML ile benzerlik gösterse de bunlardan tamamen farklı bir yapıdadır.

Şu veri tiplerini destekler:

  • Number
  • String
  • Boolean
  • Array
  • Object
  • null

İsimlendirme ve Okunuş

JSON ismi Douglas Crockford ve diğerleri tarafından Mart 2001 tarihinde kurulan State Software şirketinden ortaya çıkmıştır.

Uluslararası standart ECMA-404 ve ISO/IEC 21778:2017 standartları JSON'un /ˈ.sən/ aynı Jason ismi gibi okunması gerektiğini tanımlamaktadır,[3][4] Crockford 2011 tarihinde "Nasıl okunması gerektiği hakkında bol bol tartışılabilir ancak ben umursamıyorum" demiştir.[5]

Tarihçe

JSON 2000'li yılların başında tarayıcı eklentileri ve flash olmadan durumsuz tarayıcı sunucu arası gerçek zamanlı iletişim sağlamak amacıyla ortaya çıktı. Douglas Crackford tarafından ilk olarak Json'u tanımladı ve popülerleştirdi.[6]

JSON.org websitesi 2002 yılında ortaya çıktı, 2005 yılında Yahoo servislerinin bazılarına JSON olarak ulaşılmasını sağladı.

Douglas Crackford ayrıca JSON Lisansı'nı ortaya çıkardı ilk bakışta MIT lisansına benzese de "The Software shall be used for Good, not Evil" yani "Bu yazılım sadece iyi amaçlar için kullanılmalı kötü amaçlar için değil" maddesi eklenmişti, bu madde pek çok açık kaynak kütüphanenin lisansına ters düşerek lisans uyumsuzluğuna neden olmuştur.

Örnek

Bu örnek muhtemel bir mağazanın kategorilerini ve kategori içerisindeki kitapları ad ve yazarlarıyla göstermektedir.

 {
    "tip": "kitap",
    "tur": "roman",
    "urunler": [
        {"ad": "Ihtiyar Kemanci", "yazar": "Nihat Genc"},
        {"ad": "Su Cilgin Turkler", "yazar": "Turgut Ozakman"},
        {"ad": "Kar", "yazar": "Orhan Pamuk"}
        ]
 }

Kullanım

JSON her ne kadar bir veri formatı olsa da bazen ayar dosyaları içinde kullanılmaktadır, bu tip kullanımlarda yorumlar yararlı bulunmuş ve JSON yorumları desteklemediği için standart dışı JSON türevleri ortaya çıkmıştır bunların arasında HJSON, HOCON, JSON5 (JSON'un 5. sürümü değildir).[7]

JSON pek çok JavaScript yorumlayıcısında gömülü geldiği için eval() işlevine JSON koyup bu şekilde verinin temizlenmeden konması güvenlik açıklarına neden olmaktadır.[8] Bu sorundan ötürü JavaScript'te JSON.parse() işlevi kullanılmalıdır.[9]

Kaynakça

  1. ^ "The application/json Media Type for JavaScript Object Notation (JSON)". JSON.ORG. Temmuz 2006. 1 Ocak 2016 tarihinde kaynağından arşivlendi. Erişim tarihi: 9 Temmuz 2016. 
  2. ^ "The JSON Data Interchange Format" (PDF). 5 Mart 2016 tarihinde kaynağından arşivlendi (PDF). Erişim tarihi: 9 Temmuz 2016. 
  3. ^ "ISO/IEC 21778:2017". ISO. 15 Aralık 2018 tarihinde kaynağından arşivlendi. Erişim tarihi: 29 Temmuz 2019. 
  4. ^ "Standard ECMA-404 - The JSON Data Interchange Syntax" (PDF). Ecma International. December 2017. s. 1, footnote. 20 Ekim 2019 tarihinde kaynağından arşivlendi (PDF). Erişim tarihi: 27 Ekim 2019. 
  5. ^ "Douglas Crockford: The JSON Saga - Transcript Vids". transcriptvids.com. 25 Şubat 2021 tarihinde kaynağından arşivlendi. Erişim tarihi: 29 Ekim 2019. 
  6. ^ "Unofficial Java History". Edu4Java. 26 Mayıs 2014. 26 Mayıs 2014 tarihinde kaynağından arşivlendi. Erişim tarihi: 30 Ağustos 2019. In 1996, Macromedia launches Flash technology which occupies the space left by Java and ActiveX, becoming the de facto standard for animation on the client side. 
  7. ^ Edelman, Jason; Lowe, Scott; Oswalt, Matt. Network Programmability and Automation. O'Reilly Media. for data representation you can pick one of the following: YAML, YAMLEX, JSON, JSON5, HJSON, or even pure Python 
  8. ^ "JSON: The JavaScript subset that isn't". Magnus Holm. 13 Mayıs 2012 tarihinde kaynağından arşivlendi. Erişim tarihi: 16 Mayıs 2011. 
  9. ^ "ECMAScript Fifth Edition" (PDF). April 14, 2011 tarihinde kaynağından (PDF) arşivlendi. Erişim tarihi: March 18, 2011. 

Dış bağlantılar

İlgili Araştırma Makaleleri

<span class="mw-page-title-main">Programlama dili</span>

Programlama dili, yazılımcının bir algoritmayı ifade etmek amacıyla, bir bilgisayara ne yapmasını istediğini anlatmasının tektipleştirilmiş yoludur. Programlama dilleri, yazılımcının bilgisayara hangi veri üzerinde işlem yapacağını, verinin nasıl depolanıp iletileceğini, hangi koşullarda hangi işlemlerin yapılacağını tam olarak anlatmasını sağlar.

<span class="mw-page-title-main">Scala (programlama dili)</span>

Scala, hem nesne yönelimli programlamayı hem de fonksiyonel programlamayı destekleyen, statik olarak yazılmış güçlü bir genel amaçlı programlama dilidir. Kısa ve öz olacak şekilde tasarlanan Scala'nın tasarım kararlarının çoğu Java eleştirilerini ele almayı amaçlıyor.

<span class="mw-page-title-main">JavaScript</span> programlama dili

JavaScript, HTML ve CSS ile birlikte World Wide Web'in temel teknolojilerinden biri olan programlama dilidir. Web sitelerinin %97'sinden fazlası, web sayfası hareketleri için istemci tarafında JavaScript kullanırlar ve kullanılan kodlar genellikle üçüncü taraf kitaplıkları içerir. Tüm büyük web tarayıcılarında, kaynak kodunu kullanıcıların cihazlarında yürütebilmek için özel bir JavaScript motoru bulunur.

<span class="mw-page-title-main">C♯</span> programlama dili

C#; Microsoft tarafından .NET Teknolojisi için geliştirilen modern bir programlama dilidir. Sözdizimi C-like bir deneyim sunar.

<span class="mw-page-title-main">C++</span> bir programlama dili

C++, Bjarne Stroustrup tarafından 1979 yılında Bell Laboratuvarları'nda geliştirilmeye başlanmış, C'yi kapsayan ve çok paradigmalı, yaygın olarak kullanılan, genel amaçlı bir programlama dilidir.

Python, nesne yönelimli, yorumlamalı, birimsel (modüler) ve etkileşimli yüksek seviyeli bir programlama dilidir.

ActionScript, Flash geliştiricilerinin sunum seviyesi mantığını tasarlamak için kullandıkları nesne yönelimli programlama dilidir. Actionscript ECMAscript üzerine inşa edilmiştir, ECMAscript JavaScript'in esasını oluşturduğu için birçok geliştirici için Actionscript'i anlamak kolaydır. Actionscript Flash içerik yazarlığı esnasında kullanılan özel aksiyonları destekleyen bazı ek ECMAscript özellikleri de içermektedir

AJAX, İnternet sayfalarında JavaScript ve XMLHttpRequest kullanımı ile etkileşimli uygulamalar yaratan tekniğin adıdır.

<span class="mw-page-title-main">NFC</span> Yakın Alan İletişim Sistemi

NFC yani Near Field Communication ve Türkçe ismiyle Yakın Alan İletişimi, iki elektronik cihaz arasında 4 cm (1,57 inç) veya daha kısa bir mesafe üzerinden iletişim kurulmasını sağlayan bir dizi İletişim protokolü'dür. NFC, daha yetenekli kablosuz bağlantıları önyüklemek için kullanılabilecek basit bir kurulum aracılığıyla düşük hızlı bağlantı sunar. Diğer "yakınlık kartı" teknolojileri gibi NFC de, 106 ila 848 kbit/s aralığındaki veri hızlarında ISO/IEC 18000-3 hava arayüz standardını kullanan, küresel olarak mevcut lisanssız radyo frekansı ISM bandı'nda 13,56 MHz'lik frekansını kullanarak bir veya her iki yönde iletişim kuran NFC özellikli cihazlardaki iki anten arası endüktif bağlantıya dayanır.

C standard kütüphanesi veya libc, C programlama dilinin ISO C standardında belirlenmiş standard kütüphanesidir. ANSI C'nin başlangıcından itibaren, onun da bir üst kümesi olan POSIX C kütüphanesiyle aynı anda geliştirilmiştir.

Office Open XML ya da bilinen adıyla OOXML, XML tabanlı bir dosya sistemi olup, elektronik belgelerin saklanmasını amaçlar.

Ruby, nesneye yönelik, dinamik, reflektif ve esnek bir programlama dilidir. Ruby dili, Yukihiro Matsumoto tarafından Japonya'da tasarlanmaya ve geliştirilmeye başlanmıştır.

<span class="mw-page-title-main">Menkul değer sembolü</span>

Menkul değer sembolü ya da hisse senedi sembolü, belirli bir hisse senedi piyasasındaki belirli bir şirketin halka açık hisse senetlerini belirtmek için kullanılan benzersiz kısaltmadır. Bir hisse senedi simgesi, harfleri, sayıları ya da her ikisinin bir kombinasyonunu içerebilir.

Bir açık dosya biçimi, sayısal verileri saklamak için genellikle standart organizasyonları tarafından yayımlanmış ve herkesçe kullanılıp uyarlanılabilicek belirtimlerdir. Örneğin açık biçimler hem sahipli hem de ücretsiz ve özgür yazılımlarda her birinde kullanılan tipik yazılım lisanslarıyla birlikte kullanılabilir. Açık biçimlerin aksine kapalı biçimlerde ticari sırlar olduğu kabul edilir. Açık biçimler eğer telif hakkı, patent, ticari marka ve benzeri diğer kısıtlamalar içermiyor ve herkes istediği amaçla maddi bir maliyet olmaksızın kullanabiliyorsa özgür dosya biçimleri olarak anılır.

Dart, ilk kez Google tarafından geliştirilen ve daha sonraları ECMA tarafından standart (ECMA-408) haline getirilen açık kaynaklı ve genel-amaçlı bir programlama dilidir. Dart dili kullanılarak web, sunucu, mobil uygulamalar ve IoT cihazları geliştirilebilir.

ECMAScript veya ES, Ecma International tarafından ECMA-262 ve ISO/IEC 16262 notasyonuyla standartlaştırılmış ve markalaşmış bir betik dili spesifikasyonudur. Şu anda kendisini izleyen Javascript tabanlı olarak geliştirilmiştir. Yaygın olarak Dünya Çapında Ağ (www) için istemci taraflı betik dili olarak kullanılır. ECMAScript'in diğer uygulamaları JSCript ve ActionScript'tir.

<span class="mw-page-title-main">Windows Live Connect</span>

Windows Live Connect Microsoft'un Windows Live hizmetlerinin bir parçasıydı. API'lar ve ortak kontrollerin bir toplamıdır. Geliştiricilere daha derin bir denetime sahip olmasını, açık ve kolayca erişilebilen uygulama programlama arabirimleriyle (API'ler) çekirdek Windows Live hizmetlerine ve verilere erişmesini sağlar.

C17, ISO/IEC 9899: 2018 için kullanılan gayriresmî addır. 2017'de geliştirilmesi devam ettiği ve resmi olarak Haziran 2018'de basıldığı için C18 olarak da bilinir. C programlama dilinin yayınlanan en son resmi standardıdır. C11'in yerini almıştır ve yerine C2y'in gelmesi beklenmektedir.

BSON, bir bilgisayar veri değişim biçimidir. "BSON" adı, JSON terimine dayanmaktadır ve "Binary JSON" anlamına gelir. İlişkisel diziler, tam sayı indeksli diziler ve bir dizi temel skaler tip dahil olmak üzere basit veya karmaşık veri yapılarını temsil etmek için ikili bir şekildir. BSON, 2009 yılında MongoDB'de ortaya çıktı. Çeşitli skaler veri türleri MongoDB için özel ilgi alanıdır ve biçim, MongoDB veri tabanı için hem veri depolama hem de ağ aktarım biçimi olarak kullanılır, ancak MongoDB olmadan da bağımsız bir şekilde kolaylıkla kullanılabilir. C, C++, C#, D, Delphi, Erlang, Go, Haskell, Java, JavaScript, Julia, Lua, OCaml, Perl, PHP, Python, Ruby, Rust, Scala, Smalltalk ve Swift gibi çeşitli programlama dillerinde uyarlamaları bulunmaktadır.

Common Language Infrastructure veya kısaca CLI, programlama dili ve platformdan bağımsız bir şekilde uygulama geliştirme ve yürütmeyi mümkün kılan sistemleri belirleyen uluslararası bir teknik normdur. Standart, Uluslararası Standardizasyon Örgütü tarafından ISO/IEC 23271 numarası altında ve Ecma International tarafından ECMA-335 adı altında sürdürülmektedir. Mevcut versiyon, Haziran 2012'den itibaren 6 numaralı versiyondur.