JSON Nedir? Yeni Başlayanlar İçin Rehber

Web geliştirmeye yolculuğunuza başlıyorsanız, muhtemelen ne olduğunu bilmeseniz bile JSON'la sayısız kez karşılaşmışsınızdır. JavaScript Object Notation anlamına gelen JSON, uygulamalar arasında veri iletiminde en yaygın kullanılan formattır. Sosyal medyada okuduğunuz tweet'lerden telefonunuzdaki hava durumu verilerine kadar, JSON tüm bunları mümkün kılmak için perde arkasında çalışır.

JSON Basit Terimlerle

JSON'ı farklı bilgisayar sistemleri arasında veri için evrensel bir çevirmen olarak düşünün. Tıpkı insanların uluslararası iş dünyasında ortak bir dil olarak İngilizce'yi kullanmayı kabul etmesi gibi, bilgisayarlar ve uygulamalar da büyük ölçüde bilgi alışverişi için ortak bir format olarak JSON kullanmayı kabul etmiştir. Peki JSON'ı daha önce gelen alternatiflerden farklı kılan nedir? Özünde JSON, belirli kurallara uyan metin olarak veri yazmanın bir yoludur. Bu kurallar, hem insanların okuyabileceği hem de bilgisayarların kolayca ayrıştırabileceği kadar basittir. Bir JSON dosyasına baktığınızda, yalnızca birkaç temel öğe kullanarak net, hiyerarşik bir yapıda düzenlenmiş veriler görürsünüz: nesneler için küme parantezleri {}, listeler için köşeli parantezler [], isimleri değerlerden ayırmak için iki nokta üst üste ve öğeleri ayırmak için virgüller. <name>Ahmet</name> gibi ayrıntılı açılış ve kapanış etiketleri kullanan öncülü XML'den farklı olarak, JSON daha temiz bir sözdizimi kullanır: {"name": "Ahmet"}. Bu basitlik, JSON'ın bu kadar popüler hale gelmesinin ana nedenlerinden biridir. Daha az karmaşık, yazmak daha kolay ve ağlar üzerinden iletildiğinde daha az yer kaplar. JSON gerçek dünya kavramlarını doğal olarak temsil eder. Bir kişi, ad, yaş ve e-posta gibi özelliklere sahip bir nesne olarak temsil edilebilir. Bir alışveriş sepeti, ürün nesnelerinin bir dizisi olabilir. Bir şirket, çalışan ve departman dizileri içeren bir nesne olabilir. Gerçek dünya varlıkları ile JSON yapıları arasındaki bu doğal eşleme, onunla çalışmayı çok sezgisel hale getirir. İsminde 'JavaScript' geçmesine rağmen, JSON tamamen dilden bağımsızdır. Her büyük programlama dili, JSON ayrıştırma ve oluşturma için yerleşik desteğe sahiptir. Python'da json, Java'da Jackson ve Gson, PHP'de json_encode ve json_decode var ve JavaScript, sözdizimi nesne literal notasyonuna dayandığı için JSON ile doğal olarak çalışır. Bu evrensel destek, JSON'ın veri değişimi için fiili standart haline gelmesinin bir başka nedenidir.

JSON Neden Popüler

JSON'ın veri değişimi dünyasında hakimiyete yükselmesi tesadüfen olmadı. Geliştiricilerin karşılaştığı gerçek sorunlara çözüm olarak ortaya çıktı ve bu sorunları alternatiflerden daha iyi çözdüğü için gelişmeye devam ediyor. JSON yaygınlaşmadan önce, XML web servisleri arasında veri değişimi için birincil formattı. XML güçlü ve esnek olmasına rağmen, önemli ek yük ile gelir. XML belgeleri işleme talimatları, ad alanları, öznitelik ile öğe kararları ve karmaşık DOM veya SAX ayrıştırıcılarla ayrıştırma gerektirir. Basit veri değişimi için bu fazlaydı. Geliştiriciler daha hafif bir şey istiyordu. JSON bu hafif alternatifi sağladı. XML'de kullanıcı listesi döndüren bir REST API, açılış ve kapanış etiketleriyle düzinelerce satır gerektirebilirken, aynı veriler JSON'da alanın çok daha küçük bir bölümünde temsil edilebilir. Bu yük boyutundaki azalma, özellikle her kilobaytın önemli olduğu mobil uygulamalar için, doğrudan daha hızlı ağ aktarımlarına ve daha düşük bant genişliği maliyetlerine dönüşür. Ayrıştırma hikayesi de aynı derecede ikna edicidir. JavaScript'te, JSON.parse() bir dizeyi anında yerel bir JavaScript nesnesine dönüştürdüğü için JSON ayrıştırma pratikte ücretsizdir. Bunu, bir ayrıştırıcı nesnesi oluşturmayı, düğüm türlerini ele almayı ve belge ağacında gezinmeyi gerektiren XML ayrıştırmayla karşılaştırın. Diğer dillerde bile, JSON ayrıştırma genellikle XML ayrıştırmadan daha basit ve daha hızlıdır. JSON'ın basitliği ayrıca geliştiriciler için öğrenme eğrisini azaltır. Bir junior geliştirici JSON sözdizimini dakikalar içinde anlayabilir: anahtar-değer çiftli nesneler, değer dizileri ve bir avuç veri türü (string'ler, sayılar, boolean'lar, null). DTD'ler, XPath, XSLT veya genellikle XML'e eşlik eden düzinelerce diğer teknoloji hakkında bilgi edinmeye gerek yoktur. REST API'lerinin ve tek sayfalık uygulamaların yükselişi, JSON'ın gelişmesi için mükemmel ortamı yarattı. Web uygulamaları verileri asenkron olarak getirmeye ve istemci tarafında render etmeye geçtikçe, geliştiricilerin JavaScript'in zahmetsizce çalışabileceği bir formata ihtiyacı vardı. JSON o formattı. Bugün JSON her yerde. Hemen hemen her web API için yanıt formatıdır. MongoDB ve CouchDB gibi belge veritabanları için depolama formatıdır. Node.js paketleri (package.json), TypeScript (tsconfig.json), VS Code ayarları ve sayısız diğer araç için yapılandırma formatıdır. JSON öğrenmek sadece faydalı değil, modern yazılım geliştirme için gereklidir.

JSON Örneği

JSON'ı anlamanın en iyi yolu onu çalışırken görmektir. JSON'ın yeteneklerini gösteren ve gerçek dünya verilerini nasıl modellediğini gösteren giderek daha karmaşık örnekleri inceleyelim. Mümkün olan en basit JSON tek bir değerdir. API'lerde yaygın olarak görülmese de, bunlar geçerli JSON'dur: 42 (bir sayı), "merhaba" (bir string), true (bir boolean), null (null değeri). Ancak, karşılaşacağınız JSON'ların çoğu nesnelerden veya dizilerden oluşur. Temel bir JSON nesnesi, özelliklere sahip tek bir varlığı temsil eder: {"name": "Ahmet Yılmaz", "age": 30, "email": "[email protected]"}. Her özelliğin bir anahtarı (tırnak içindeki ad) ve bir değeri (herhangi bir JSON veri türü olabilir) vardır. Anahtarlar ve değerler iki nokta üst üste ile, özellikler virgülle ayrılır. Diziler, değer listelerini temsil etmenize olanak tanır: ["elma", "muz", "kiraz"]. Diziler herhangi bir JSON değeri içerebilir, türlerin bir karışımı dahil, ancak pratikte diziler genellikle tutarlılık için aynı türde öğeler içerir. JSON'ın gerçek gücü, nesneleri ve dizileri iç içe geçirdiğinizde ortaya çıkar. İşte bir kullanıcı profilini temsil eden daha gerçekçi bir örnek: {"id": 12345, "username": "ayilmaz", "profile": {"firstName": "Ahmet", "lastName": "Yılmaz", "bio": "İstanbul'dan yazılım geliştirici"}, "interests": ["programlama", "yürüyüş", "fotoğrafçılık"], "socialLinks": [{"platform": "twitter", "url": "https://twitter.com/ayilmaz"}, {"platform": "github", "url": "https://github.com/ayilmaz"}], "settings": {"newsletter": true, "darkMode": false, "language": "tr"}, "createdAt": "2024-01-15T10:30:00Z"} Bu tek JSON nesnesi şunları içerir: ilkel değerler (sayı olarak id, string olarak username), iç içe bir nesne (profile), basit bir dizi (interests), nesnelerin bir dizisi (socialLinks), boolean değerleri olan bir ayarlar nesnesi ve ISO 8601 formatında bir tarih string'i. Bu, JSON'ın karmaşık, gerçek dünya veri yapılarını zarif bir şekilde nasıl temsil edebileceğini gösterir. Uygun girintiyle formatlandığında, bu yapı hemen okunabilir hale gelir ve her iç içe geçme seviyesi hiyerarşiyi açıkça göstermek için girintilenir.

JSON Nerede Kullanılır

JSON o kadar yaygın hale geldi ki nerede kullanıldığını listelemek neredeyse elektriğin nerede kullanıldığını listelemek gibi - her yerde. JSON'ın uygulamalarının genişliğini anlamak, onu ustalaşmanın neden bu kadar değerli bir beceri olduğunu takdir etmeye yardımcı olur. JSON'ın en belirgin kullanımı web API'leridir. Hava durumu uygulamanız tahmini aldığında, sosyal medya akışınız yeni gönderiler yüklediğinde, e-ticaret siteniz ürün detaylarını aldığında - bunların hepsi genellikle JSON yanıtları döndüren HTTP istekleri aracılığıyla gerçekleşir. REST mimari stili ve JSON, modern web geliştirmede neredeyse eşanlamlı hale gelmiştir. GraphQL gibi daha yeni API paradigmaları bile yanıt formatları için JSON kullanır. Yapılandırma dosyaları JSON için bir başka önemli alandır. Node.js ekosistemi, bağımlılıkları ve proje meta verilerini yönetmek için package.json'da standartlaştı. Bu tek karar, milyonlarca geliştiricinin günlük olarak JSON ile çalışacağı anlamına geliyordu. TypeScript tsconfig.json, Babel babel.config.json, ESLint .eslintrc.json kullanır, VS Code ayarlarını JSON dosyalarında saklar ve liste uzayıp gider. JSON'ın insan tarafından okunabilir yapısı, geliştiricilerin okumaya ve düzenlemeye ihtiyaç duyduğu yapılandırma için ideal kılar. MongoDB ve CouchDB gibi belge veritabanları, verileri JSON belgeleri olarak saklar (MongoDB'nin durumunda teknik olarak ikili JSON formatı olan BSON). Depolama formatı ile API formatı arasındaki bu uyum, geliştirmeyi önemli ölçüde basitleştirir. Bir JavaScript nesnesini tablolara ve sütunlara eşlemeden doğrudan saklayabilir ve aynı şekilde geri alabilirsiniz. Tarayıcı API'leri yaygın olarak JSON kullanır. localStorage ve sessionStorage API'leri verileri string olarak depoladığından, karmaşık veri yapılarını saklamak için JSON.stringify() ve JSON.parse() yaygın olarak kullanılır. Fetch API'si, yanıtları ayrıştırmak için kullanışlı bir .json() yöntemine sahip Response nesneleri döndürür. Mesaj kuyrukları, olay akışları ve servisler arası iletişim için veri serileştirme sıklıkla JSON kullanır. Apache Kafka, RabbitMQ ve AWS SQS yaygın olarak JSON kodlu mesajlar taşır. Stripe, GitHub ve Slack gibi hizmetlerden gelen webhook'lar, olay verilerini JSON yükleri olarak sunar. Web geliştirmesi dışında bile JSON uygulamalar bulmuştur. Bilimsel veri değişimi, Ansible gibi yapılandırma yönetim araçları, IoT cihaz iletişimi ve log toplama sistemleri JSON'dan yararlanır. Formatın basitliği ve evrensel desteği, birden fazla sistemin veri değişimi yapması gerektiğinde onu güvenli seçim haline getirir. Geliştirici kariyerinizde ilerledikçe, sayısız bağlamda JSON ile çalışacaksınız. Onu derinlemesine anlamaya yapılan yatırım, dokunduğunuz her projede kar getirir.

Aracı Dene

JSON Biçimlendirici

JSON Biçimlendirici