JSON: nedir, veri yapısı ve çalışma prensibi

Yazar: IT Sectr Yayınlanma: 2026-03-08 Okuma süresi: 8 dk

JSON (JavaScript Object Notation), JavaScript nesne sözdizimine dayanan metin tabanlı bir veri değişim formatıdır. REST API'ler ve yapılandırma dosyalarından veritabanları ve mobil uygulamalardaki veri depolamaya kadar her yerde kullanılır. Resmi JSON web sitesine göre, format dilden bağımsızdır ve neredeyse tüm modern platformlar tarafından desteklenir. JSON, istemci ve sunucu arasında veri aktarımı için fiili standart haline gelmiştir.

Önemli Noktalar

  • JSON — JavaScript sözdizimine dayalı, yapılandırılmış veriler için hafif bir metin formatı
  • Altı veri türü — dize, sayı, boolean, null, dizi ve nesne her yapı için
  • Evrensellik — tüm programlama dilleri ve platformlar tarafından desteklenir
  • REST API — web ve mobil uygulamalarda veri alışverişi için ana format
  • İnsan okunabilirliği — basit sözdizimi araçlar olmadan kolayca okunur ve düzenlenir

JSON nedir?

JSON, JavaScript sözdizimine dayalı, yapılandırılmış verileri temsil etmek için bir metin formatıdır. JavaScript'teki kökenlerine rağmen, format tamamen dilden bağımsızdır — tüm popüler programlama dilleri için ayrıştırıcılar ve serileştiriciler mevcuttur.

JSON'ın tarihi 2000'lerin başında, Douglas Crockford'un veri değişimi için JavaScript sözdiziminin bir alt kümesini çıkarmasıyla başladı. 2013 yılında format ECMA-404 olarak ve daha sonra ISO/IEC 21778:2017 olarak standartlaştırıldı. İsim, JavaScript Object Notation'ın kısaltmasıdır.

JSON'ın ana avantajı minimalist sözdizimidir. Verileri tanımlamak için yalnızca altı tür kullanılır: dize, sayı, boolean, null, dizi ve nesne. Bu, uygulamalarda kullanılan herhangi bir veri yapısını temsil etmek için yeterlidir.

JSON nerede kullanılır

  • REST API — sunucu ve istemci arasındaki istek ve yanıtların ana formatı
  • Yapılandırma dosyaları — package.json, tsconfig.json, .prettierrc
  • Veritabanları — MongoDB, PostgreSQL (JSONB), Firebase Firestore
  • Mobil uygulamalar — ayarları depolama, veri önbelleğe alma
  • Web teknolojileri — WebSocket, Server-Sent Events, localStorage

JSON sözdizimi ve veri türleri

JSON sözdizimi son derece basittir: veriler anahtar-değer çiftleri olarak temsil edilir, burada anahtar çift tırnak içinde bir dize ve değer altı temel türden biridir. Nesneler küme parantezleri içine alınır, diziler köşeli parantezler içine alınır. Dizeler çift tırnak kullanmalıdır; tek tırnaklara izin verilmez.

JSON'daki sayılar tam sayı veya kayan noktalı, pozitif veya negatif, üstel gösterimle olabilir. Boolean değerleri true ve false değişmezleriyle temsil edilir ve değerin yokluğu null ile temsil edilir. Diziler, iç içe diziler ve nesneler dahil olmak üzere herhangi bir türden değerlerin sıralı bir kümesini içerir.

json
{
  "name": "JSON",
  "type": "text",
  "version": 2024,
  "flexible": true,
  "extensions": null,
  "languages": [
    "JavaScript",
    "Python",
    "Java"
  ],
  "nested": {
    "info": "iç içe yerleştirme desteği"
  }
}
Tür Örnek Açıklama
Dize “metin” Çift tırnak içinde, kaçış dizileriyle
Sayı 42 Tam sayı, kayan noktalı, üstel
Boolean true true veya false — tırnak işareti yok
null null Değerin yokluğu
Nesne {} Sırasız anahtar-değer çiftleri kümesi
Dizi [] Sıralı değerler listesi

REST API'de JSON

JSON, mobil ve web geliştirmede REST API'ler için birincil veri değişim formatıdır. Sunucu yanıt gövdesinde JSON gönderir, istemci istek gövdesinde gönderir. JSON için standart Content-Type başlığı application/json'dır.

Modern REST API'ler, basit listelerden varlıklar arasında ilişkiler bulunan karmaşık iç içe yapılara kadar her türlü veriyi iletmek için JSON kullanır. İstemci kitaplıkları (JavaScript'te Axios veya Android'de Retrofit gibi) JSON'u otomatik olarak serileştirir ve seri durumdan çıkarır, geliştiriciyi manuel ayrıştırmadan kurtarır.

REST API'lerde JSON'ın önemli bir avantajı, sorgu parametreleri aracılığıyla kısmi veri aktarımı (kısmi yanıt) yeteneği ve sunucuya ek istekler olmadan iç içe kaynakların desteklenmesidir.

Mobil platformlarda JSON ayrıştırma

JSON ayrıştırma, mobil platformlarda yerleşik araçlar kullanılarak gerçekleştirilir. Android, Google'ın Gson'ını veya Square'in Moshi'sini kullanır, iOS, JSONDecoder ile Codable protokolünü kullanır. Her platform, JSON'u yerel nesnelere ve geriye dönüştürmek için kullanışlı araçlar sağlar.

Android'de (Kotlin) JSON

Android'de popüler yaklaşım Gson veya Moshi kullanır. @SerializedName ek açıklamalarıyla bir veri sınıfı tanımlayın ve seri durumdan çıkarma için fromJson'u çağırın. Kitaplık, JSON alan adlarını otomatik olarak sınıf özellikleriyle eşler.

kotlin
import com.google.gson.Gson
import com.google.gson.annotations.SerializedName

data class User(
    @SerializedName("id") val id: Int,
    @SerializedName("name") val name: String,
    @SerializedName("email") val email: String
)

fun parseJson(jsonString: String): User {
    val gson = Gson()
    return gson.fromJson(jsonString, User::class.java)
}

iOS'te (Swift) JSON

iOS'te, JSONDecoder ile yerleşik Codable protokolü kullanılır. Veri yapısı, Codable'a uygun bir struct olarak bildirilir, ardından JSON tek bir satırla ayrıştırılır. JSONEncoder, ters serileştirme gerçekleştirir — bir nesneyi sunucuya göndermek için JSON'a dönüştürür.

swift
import Foundation

struct User: Codable {
    let id: Int
    let name: String
    let email: String
}

func parseJSON(from data: Data) throws -> User {
    let decoder = JSONDecoder()
    return try decoder.decode(User.self, from: data)
}

JSON vs XML: format karşılaştırması

JSON ve XML, yapılandırılmış verileri iletmek için iki ana formattır. JSON basitlik ve performansta kazanır, XML titizlik ve doğrulamada kazanır. Aralarındaki seçim proje gereksinimlerine bağlıdır: REST API'ler daha sık JSON kullanır, şemalı karmaşık belgeler XML kullanır.

XML, her öğe için kapanış etiketleri gerektirir ve bu da veri boyutunu JSON'a kıyasla 2-3 kat artırır. Aynı zamanda XML, ad alanlarını, XSD şemalarını, nitelikleri ve XSLT dönüşümünü destekleyerek belge yönetimi ve kurumsal sistem entegrasyonu görevleri için daha güçlü hale getirir.

Özellik JSON XML
Sözdizimi Minimalist, anahtar-değer Etiket tabanlı, açma ve kapama etiketleri
Veri boyutu Kompakt JSON'dan 2-3 kat büyük
Veri türleri Altı temel tür Yalnızca metin, şemalar aracılığıyla türler
Doğrulama Yerleşik yok, JSON Schema aracılığıyla XSD — katı ve olgun
Ad alanları Yok Tam ad alanı desteği
Ayrıştırma hızı Yüksek Karmaşıklık nedeniyle daha düşük

JSON ile çalışma örnekleri

Örnekler, mobil geliştirmede JSON ile tipik işlemleri gösterir: API yanıtlarını ayrıştırma, gönderme için JSON oluşturma ve iç içe yapıları işleme. Bu kalıpları anlamak, herhangi bir mobil uygulama geliştiricisi için gereklidir.

Bir nesneyi JSON'a serileştirme

JavaScript'te, JSON.stringify bir nesneyi JSON dizesine dönüştürür. İkinci bağımsız değişken, seçmeli serileştirme için bir anahtar dizisi veya bir değiştirme işlevi olabilir. Üçüncü bağımsız değişken, biçimlendirme için girintiyi ayarlar.

typescript
interface Order {
  id: string;
  items: OrderItem[];
  total: number;
  createdAt: string;
}

const order: Order = {
  id: 'ord_001',
  items: [{ product: 'phone', quantity: 2 }],
  total: 1599.98,
  createdAt: '2026-07-03T10:00:00Z'
};

const jsonString = JSON.stringify(order, null, 2);

İç içe JSON ayrıştırma

Moshi kitaplığıyla Kotlin'de, iç içe JSON nesneleri, iç içe veri sınıfları aracılığıyla işlenir. @Json ek açıklaması, sınıf özellik adından farklıysa JSON alan adını belirtir. Diziler, öğe türüyle birlikte List olarak temsil edilir.

kotlin
import com.squareup.moshi.Moshi
import com.squareup.moshi.kotlin.reflect.KotlinJsonAdapterFactory

data class ApiResponse(
    val status: String,
    val data: List<Product>,
    val pagination: Pagination
)

data class Product(
    val id: Int,
    val title: String,
    val price: Double
)

data class Pagination(
    val page: Int,
    val total: Int
)

val moshi = Moshi.Builder()
    .add(KotlinJsonAdapterFactory())
    .build()

JSON Schema: yapı doğrulama

JSON Schema, XML için XSD'ye benzer şekilde bir JSON belgesinin yapısını tanımlamak için bir dildir. JSON Schema kullanarak zorunlu alanları, veri türlerini, değer aralıklarını, dize kalıplarını ve iç içe yapıyı belirtebilirsiniz. Şema doğrulaması, uygulamada işlenmeden önce veri hatalarını tespit eder.

JSON Schema, REST API'leri belgelemek için OpenAPI'de (Swagger), giriş verisi doğrulama formlarında ve testlerde yaygın olarak kullanılır. Şema dosyasının kendisi bir JSON belgesidir ve standart JSON ayrıştırıcılarının onu okumasına olanak tanır. Tüm popüler programlama dilleri için çevrimiçi doğrulayıcılar ve kitaplıklar mevcuttur.

Mobil geliştirmede JSON Schema, test sırasında sunucu yanıtlarını doğrulamak ve yapılandırma dosyalarını kontrol etmek için kullanılır. Android'de network-validator ve json-schema-validator gibi kitaplıklar, doğrulamayı doğrudan geliştirme sürecine yerleştirmeye olanak tanır ve hataları erken aşamalarda önler.

Sıkça Sorulan Sorular

JSON hangi veri türlerini destekler?

JSON altı türü destekler: dize (çift tırnak içinde), sayı (tam sayı ve kayan noktalı), boolean (true/false), null, nesne ({} içinde anahtar-değer çiftleri) ve dizi ([] içinde değer listesi). Bu, uygulamalardaki herhangi bir veri yapısı için yeterlidir.

JSON'da yorum kullanılabilir mi?

Hayır, JSON standardı yorumları desteklemez. Yorumlara ihtiyacınız varsa, JSON5 (genişletilmiş JSON) kullanın veya bir açıklama alanı ekleyin, örneğin “_comment”: “açıklama”. VS Code gibi bazı araçlar, yapılandırma JSON dosyalarında yorumları destekler, ancak bu standart dışı bir uzantıdır.

PostgreSQL'de JSON, JSONB'den nasıl farklıdır?

JSONB, PostgreSQL'de JSON için ikili bir depolama formatıdır. Metin JSON'dan farklı olarak, JSONB işlemede daha hızlıdır, indekslemeyi (GIN indeksleri) destekler ve anahtar benzersizliğini garanti eder. Ancak JSONB, eklenen meta veriler nedeniyle diskte daha fazla yer kaplar.

JSON'ın geçerli olup olmadığı nasıl kontrol edilir?

Hızlı doğrulama için JSONLint (jsonlint.com), try-catch ile JavaScript'te yerleşik JSON.parse() veya IDE eklentilerini kullanın. Doğrulama, doğru tırnak işaretleri, parantez kapatma ve tür uygunluğunun kontrolünü içerir. Karmaşık şemalar için JSON Schema Validator kullanın.

JSON dosyasının maksimum boyutu nedir?

JSON belirtiminde sınır yoktur. Pratikte, boyut cihaz belleği ve ayrıştırıcı yetenekleriyle sınırlıdır. Mobil uygulamalar için, yanıt başına 1-2 MB'ı aşmamanız önerilir ve büyük veriler için sayfalama veya akış kullanın.

Özet

  • JSON — yapılandırılmış bilgi alışverişi için altı veri türüne sahip minimalist bir metin formatı
  • Dil bağımsızlığı — JSON ayrıştırıcıları tüm popüler programlama dilleri için mevcuttur
  • REST API, mobil uygulamalarda istek ve yanıtlar için standart format olarak JSON kullanır
  • Ayrıştırma yerleşik araçlarla gerçekleştirilir: Android'de Gson/Moshi, iOS'te Codable
  • JSON, XML'den 2-3 kat daha kompakttır, ancak performansta Protobuf'tan düşüktür
  • İnsan okunabilirliği — sözdizimi özel araçlar olmadan okumak ve hata ayıklamak kolaydır
  • JSON Schema — yapıyı ve veri türlerini doğrulamak için ek bir araç

Anahtar teslim bir mobil uygulama geliştireceğiz

IT Sectr, 2017'den beri girişimler ve işletmeler için iOS ve Android uygulamaları oluşturmaktadır. Size danışmanlık yapacak ve en iyi çözümü önereceğiz.

Projeyi tartış

Ayrıca okuyun