JSON Nedir, Veri Metin Olarak Nasıl Taşınıyor?

Haberci

SEO UZMANI
Yönetici
Katılım
21 May 2023
Mesajlar
712
Tepki
17
Puan
18
977




Bir API'den veri çektiğinizde ekrana süslü parantezlerle dolu bir metin geliyor. Bu metnin adı JSON. Peki neden bu biçim standart hâline geldi ve içindeki kurallar tam olarak neler?

Bu yazı JSON'un tanımını, hangi veri türlerini taşıdığını, nesne ile dizi arasındaki farkı ve tasarım hedeflerini biçimi tanımlayan standart belgeye dayanarak açıklıyor.

Belirtimdeki tanım​


RFC 8259 biçimi dört nitelikle tanımlıyor: JavaScript Object Notation (JSON) hafif, metin tabanlı, dilden bağımsız bir veri değişim biçimidir.

Kökeni de belirtiliyor: biçim ECMAScript Programlama Dili Standardı'ndan türetilmiş.

Belgeye göre JSON, yapılandırılmış verinin taşınabilir biçimde temsil edilmesi için küçük bir biçimlendirme kuralları kümesi tanımlıyor.

"Dilden bağımsız" ifadesi kritik. Biçim JavaScript'ten türemiş olsa da kullanımı o dile bağlı değil.

  • Hafif: Küçük bir kural kümesi.
  • Metin tabanlı: İnsan tarafından okunabilir.
  • Dilden bağımsız: Herhangi bir dilde işlenebilir.

Hangi türleri taşıyor?​


Belirtim türleri ikiye ayırıyor. JSON dört ilkel türü temsil edebiliyor: dizgiler, sayılar, mantıksal değerler ve boş değer. Bunlara ek olarak iki yapısal tür var: nesneler ve diziler.

Dizginin tanımı da veriliyor: sıfır veya daha fazla Unicode karakterden oluşan dizi. Belge bu atfın Unicode'un en son sürümüne yapıldığını, gelecekteki Unicode değişikliklerinin JSON söz dizimini etkilemesinin beklenmediğini not ediyor.

Bu altı tür, biçimin tamamını oluşturuyor. Tarih, ikili veri veya özel nesne türü yok; bunlar dizgi ya da sayı olarak kodlanıyor.

Püf nokta' Alıntı:
JSON'da tarih türü yok. Tarih taşımak istiyorsanız onu bir dizgi olarak kodlamanız ve iki tarafın aynı biçimi anlaması gerekiyor.

Nesne ile dizi farkı​


Belirtim iki yapısal türü ayrı ayrı tanımlıyor.

Nesne, sıfır veya daha fazla ad/değer çiftinden oluşan sırasız bir koleksiyon. Ad bir dizgi; değer ise dizgi, sayı, mantıksal değer, boş değer, nesne veya dizi olabiliyor.

Dizi ise sıfır veya daha fazla değerden oluşan sıralı bir dizilim.

Aradaki fark tek kelimede toplanıyor: sırasız ve sıralı. Nesnede anahtarların sırası anlam taşımıyor; dizide öğelerin sırası veri olarak anlamlı.

Belge terimlerin kökenini de not ediyor: "nesne" ve "dizi" terimleri JavaScript'in geleneklerinden geliyor.

Tasarım hedefleri​


Belirtim biçimin hedeflerini dört maddede topluyor: asgari, taşınabilir, metinsel olması ve JavaScript'in bir alt kümesi olması.

"Asgari" hedefi, biçimin neden bu kadar az tür içerdiğini açıklıyor. Kural kümesi küçük tutulduğu için her ortamda aynı biçimde uygulanabiliyor.

Belge kendi işlevini de tanımlıyor: bu belge JSON'un diğer belirtimleriyle olan tutarsızlıkları gideriyor, belirtim hatalarını onarıyor ve deneyime dayalı birlikte çalışabilirlik rehberliği sunuyor.

"Asgari" olmanın bedeli​


Küçük bir tür kümesi taşınabilirliği artırıyor ama bazı ihtiyaçları uygulamaya bırakıyor. Tarih, para birimi, ikili dosya ya da tekrarlanmayan kimlik gibi kavramların hiçbiri belirtimde tanımlı değil.

Bunların hepsi mevcut altı türden birine sarılarak taşınıyor. Sonuç olarak iki tarafın aynı anlaşmayı paylaşması gerekiyor: gönderen tarihi hangi biçimde yazdıysa, alan taraf onu aynı biçimde okumak zorunda.

Sayı tarafında da benzer bir konu var. Belirtim sayıları tanımlıyor ama her ortamın sayıları aynı hassasiyetle işleyeceğini garanti etmiyor; bu yüzden çok büyük kimlik değerleri genellikle dizgi olarak taşınıyor.

Belgenin birlikte çalışabilirlik rehberliği sunma amacı da buradan geliyor: biçim basit olduğu için uygulamalar arası anlaşmazlıklar söz diziminde değil, anlamda çıkıyor.

Dosya ve ağ tarafı​


MDN'in JSON öğreticisi biçimi kullanım açısından anlatıyor: JSON, JavaScript nesne söz dizimini izleyen metin tabanlı bir veri biçimi ve yapılandırılmış veriyi bir dizgi olarak temsil ediyor.

Bunun ne işe yaradığı da yazılı: veriyi bir ağ üzerinden iletmek istediğinizde bu temsil işe yarıyor.

MDN iki kavramı da adlandırıyor: bir dizgiyi yerel nesneye dönüştürmeye seri hâlden çıkarma (deserialization), bir yerel nesneyi ağ üzerinden iletilebilecek dizgiye dönüştürmeye ise serileştirme (serialization) deniyor.

Dosya tarafında da karşılığı var: bir JSON dizgisi kendi dosyasında saklanabiliyor; bu dosya temelde .json uzantılı bir metin dosyası ve MIME türü application/json.

MDN ayrıca çoğu programlama ortamının JSON okuma (ayrıştırma) ve üretme yeteneği sunduğunu belirtiyor.

Nerede karşınıza çıkıyor?​


Web servisleriyle çalışırken bu biçim varsayılan taşıyıcı hâline geliyor. HTTP metodlarının hangi işi yaptığını REST API yazımızda anlatmıştık.

İstemci tarafında bu verinin nasıl işlendiğini JavaScript yazımızda ele almıştık. Veri çekerken kullanılan kimlik bilgisinin nerede durması gerektiğini ise API anahtarı yazımızda toplamıştık.

Sık Sorulan Sorular​


JSON nedir?
RFC 8259'a göre hafif, metin tabanlı, dilden bağımsız bir veri değişim biçimi.

Hangi türleri destekliyor?
Dört ilkel tür (dizgi, sayı, mantıksal değer, boş değer) ve iki yapısal tür (nesne, dizi).

Nesne ile dizi farkı ne?
Nesne sırasız ad/değer çiftleri koleksiyonu; dizi sıralı değer dizilimi.

JavaScript gerekiyor mu?
Hayır. Belirtim biçimi dilden bağımsız olarak tanımlıyor.

Dosya uzantısı ve MIME türü ne?
MDN'e göre .json uzantılı metin dosyası ve application/json MIME türü.

Özetle​


JSON, yapılandırılmış veriyi metin olarak taşımak için tanımlanmış küçük kurallı bir biçim. Dört ilkel ve iki yapısal tür içeriyor; nesne sırasız, dizi sıralı. Tasarım hedefleri asgari, taşınabilir ve metinsel olmak. JavaScript'ten türemiş olsa da kullanımı ona bağlı değil; bu yüzden farklı diller arasındaki veri alışverişinin ortak dili hâline geldi.

Servisinizin döndürdüğü veride tarih alanını hangi biçimde kodluyorsunuz?

Güncelleme: 3 Eylül 2026. RFC 8259 ve MDN JSON öğreticisi kontrol edildi.



Dijital Dünyanıza Yön Veren Pusula
 

Ekli dosyalar

  • banner_16.jpg
    banner_16.jpg
    5 KB · Görüntüleme: 1
Geri
Üst