İçeriğe atla

json

JSON Nedir? JavaScript Object Notation Kapsamlı Rehberi

5 min read

JSON Nedir? JavaScript Object Notation Kapsamlı Rehberi

Web geliştirmeyle ilgilendiyseniz, bir API ile etkileşime girdiyseniz veya modern bir yazılım uygulamasını yapılandırdıysanız, şüphesiz JSON ile karşılaşmışsınızdır. O, dünya çapındaki sunucular ve web tarayıcıları arasında sorunsuz veri alışverişini kolaylaştıran, modern web'e güç veren görünmez dildir.

Peki ama JSON tam olarak nedir? JavaScript tabanlı bir format, nasıl oldu da hemen hemen her programlama dilinde veri alışverişi için tartışmasız bir standart haline geldi?

Bu kapsamlı ve 1000 kelimelik rehberde JSON'ın gizemini çözeceğiz. Yapısını inceleyecek, XML gibi eski formatların yerini neden aldığını anlayacak ve günümüzde yazılım geliştirmede kullanıldığı pratik yollara bakacağız.

JSON Ne Anlama Geliyor?

JSON, JavaScript Object Notation (JavaScript Nesne Gösterimi) kelimelerinin baş harflerinden oluşur.

Adına rağmen, JSON temelde dilden bağımsız bir veri formatıdır. Sözdizimi, nesnelerin JavaScript programlama dilinde yazılış biçiminden türetilmiş olsa da, JSON'ı okumak, yazmak veya anlamak için JavaScript bilmenize gerek yoktur. Günümüzde hemen hemen her programlama dili (Python, Java, C#, PHP, Ruby vb.), JSON verilerini ayrıştırmak (parse) ve oluşturmak için yerleşik araçlara sahiptir.

Özünde JSON, yapılandırılmış verileri depolamak ve taşımak için kullanılan hafif, metin tabanlı bir formattır. İnsanlar tarafından kolayca okunup yazılabilmesi ve aynı zamanda makinelerin ayrıştırması ve oluşturması için kolay olması amaçlanarak tasarlanmıştır.

JSON Sözdizimi ve Yapısı

JSON, hemen hemen tüm modern programlama dillerinde var olan iki evrensel veri yapısı üzerine kurulmuştur:

  1. İsim/değer çiftleri koleksiyonu: Genellikle bir nesne, kayıt, yapı, sözlük, karma tablosu, anahtarlı liste veya ilişkisel dizi olarak gerçekleştirilir.
  2. Sıralı bir değerler listesi: Genellikle bir dizi (array), vektör, liste veya dizi olarak gerçekleştirilir.

Bu yapıların pratikte nasıl göründüğünü görmek için somut bir örneğe bakalım. İşte bir kullanıcı profilini temsil eden tipik bir JSON dosyası:

{
  "ad": "Ahmet",
  "soyad": "Yilmaz",
  "yas": 30,
  "calisiyorMu": true,
  "iletisim": {
    "email": "ahmet.yilmaz@example.com",
    "telefon": "555-1234"
  },
  "yetenekler": ["JavaScript", "Python", "Veri Analizi"],
  "projeler": null
}

Kuralları Parçalamak

Yukarıdaki örneğe baktığımızda, JSON sözdizimini yöneten katı kuralları belirleyebiliriz:

  • Veriler isim/değer çiftleri halindedir: Anahtar/değer çiftleri olarak da bilinir. Bir anahtar (key), çift tırnak içine alınmış bir dize (string) olmalıdır (örneğin, "ad"). Değer (value) ise bir dize, sayı, boolean, null, nesne veya dizi olabilir. Anahtar ve değer iki nokta üst üste (:) ile birbirinden ayrılır.
  • Veriler virgülle ayrılır: Her bir anahtar/değer çifti, bir sonrakinden virgül (,) ile ayrılır.
  • Süslü parantezler nesneleri tutar: Bir nesne ({}), sırasız bir anahtar/değer çiftleri kümesidir. Örneğimizde, belgenin tamamı bir ana nesnedir ve "iletisim" iç içe geçmiş bir nesne içerir.
  • Köşeli parantezler dizileri tutar: Bir dizi ([]), sıralı bir değerler koleksiyonudur. Örneğimizde, "yetenekler" üç metin dizesinden oluşan bir dizi içerir.
  • Dizeler için çift tırnak zorunludur: Tek tırnak (') kullanabileceğiniz JavaScript'in aksine, JSON, dizeler ve anahtarlar için çift tırnak (") gerektirir.

İzin Verilen Veri Tipleri

JSON'daki bir değer aşağıdaki veri tiplerinden biri olmalıdır:

  • Dize (String): Çift tırnak içindeki metin (örneğin, "Merhaba").
  • Sayı (Number): Bir tam sayı veya kayan noktalı sayı (örneğin, 42 veya 3.14).
  • Mantıksal (Boolean): true (doğru) veya false (yanlış).
  • Null: Boş veya var olmayan bir değeri temsil eder (null).
  • Nesne (Object): İç içe geçmiş bir JSON nesyesi ({}).
  • Dizi (Array): Bir değerler listesi ([]).

JSON kasıtlı olarak fonksiyonları, tarihleri (tarihler genellikle dize olarak geçirilir) veya tanımlanmamış (undefined) değerleri desteklemez. Bu katı sınırlama, farklı programlama dilleri arasında maksimum uyumluluk sağlar.

JSON Neden XML'in Yerini Aldı?

JSON'ı gerçekten takdir etmek için, büyük ölçüde yerini aldığı formata bakmamız gerekir: XML (eXtensible Markup Language).

2000'lerin başında XML, web'de veri alışverişi için bir standarttı (AJAX'ı düşünün - Asynchronous JavaScript and XML). Ancak XML, HTML'e benzer şekilde büyük ölçüde etiket (tag) tabanlıdır.

Önceki JSON örneğimizin XML'de nasıl görüneceğine bir bakalım:

<kullanici>
  <ad>Ahmet</ad>
  <soyad>Yilmaz</soyad>
  <yas>30</yas>
  <calisiyorMu>true</calisiyorMu>
  <iletisim>
    <email>ahmet.yilmaz@example.com</email>
    <telefon>555-1234</telefon>
  </iletisim>
  <yetenekler>
    <yetenek>JavaScript</yetenek>
    <yetenek>Python</yetenek>
    <yetenek>Veri Analizi</yetenek>
  </yetenekler>
</kullanici>

XML ile karşılaştırıldığında JSON, web veri alışverişi savaşını birkaç nedenden dolayı kazandı:

  1. Daha Az Ayrıntılı (Less Verbose): JSON kapanış etiketleri kullanmaz, bu da dosya boyutlarını önemli ölçüde küçültür ve bant genişliği kullanımını azaltır.
  2. Ayrıştırması (Parse) Daha Hızlı: JSON, modern programlama dillerinin veri yapılarını yakından yansıttığı için, JSON'ı bellekteki bir nesneye ayrıştırmak inanılmaz derecede hızlıdır. XML ayrıştırma ise yavaş olması ve yoğun kaynak tüketmesiyle bilinir.
  3. Diziler Doğaldır: JSON dizileri yerel olarak destekler ([]). XML'in yerel bir dizi türü yoktur; geliştiricilerin bir listeyi simüle etmek için (yukarıdaki <yetenek> gibi) yinelenen öğeler oluşturması gerekir.
  4. İnsanlar İçin Daha Kolay: JSON'ın temiz, minimalist sözdizimi, insanların XML'in ağır etiketleme yapısına kıyasla manuel olarak okuması ve yazması için çok daha kolaydır.

JSON Günümüzde Nerelerde Kullanılıyor?

JSON, metin verisi aktarımında fiili standart haline geldi. Temel kullanım alanları şunlardır:

1. Web API'leri (REST ve GraphQL)

Modern bir web uygulaması (React veya Vue önyüzü gibi) bir sunucudan (Node.js veya Python arka ucu gibi) veri çekmesi gerektiğinde, bu veri neredeyse her zaman JSON olarak biçimlendirilmiş olarak gönderilir. İster hava durumu verilerini çekiyor, ister tweetleri yüklüyor, ister bir ödeme formu gönderiyor olun, taşınan yük (payload) JSON'dır.

2. Yapılandırma (Configuration) Dosyaları

İnsanlar tarafından okunabilir doğası nedeniyle JSON, modern geliştirme araçlarındaki yapılandırma dosyaları için yoğun olarak kullanılır. Node.js kullanıyorsanız, projenizin ayarları ve bağımlılıkları bir package.json dosyasında saklanır. VS Code, Prettier ve Eslint gibi araçların tümü yapılandırma için JSON kullanır.

3. NoSQL Veritabanları

Modern NoSQL veritabanları, en önemlisi MongoDB, verileri BSON (Binary JSON) adı verilen bir formatta depolar. Bu, geliştiricilerin karmaşık, iç içe geçmiş veri yapılarını, geleneksel SQL veritabanlarındaki gibi katı satırlara ve sütunlara eşlemek (map) zorunda kalmadan doğrudan veritabanında depolamasına olanak tanır.

Sonuç

JSON'ın hakimiyete yükselişi, sadeliğin gücünün bir kanıtıdır. Hem insanlar hem de makineler tarafından hafif, kesin olarak tanımlanmış ve evrensel olarak anlaşılan bir format oluşturarak JSON, verilerin web üzerinden nasıl iletildiğini temelden değiştirdi.

İster karmaşık mikro hizmetler (microservices) oluşturan deneyimli bir yazılım mühendisi olun, ister ilk web uygulamanız için veri çekmeyi öğrenen bir acemi olun, JSON'da ustalaşmak, modern teknoloji ortamında kesinlikle gerekli olan temel bir beceridir.

Buy me a coffee