Ana içeriğe atla

Python JSON Verileri: Örneklerle Bir Rehber

Python'da JSON ile çalışma: serileştirme, seriden çıkarma, biçimlendirme, performans optimizasyonu, API'lerle çalışma ve JSON’un sınırlamaları ile alternatiflerini öğrenin.
Güncel 16 Nis 2026  · 6 dk. oku

JSON (JavaScript Object Notation), Python da dahil olmak üzere birçok programlama dilinde veri alışverişi için popüler hale gelmiş, hafif bir veri değişim biçimidir. Basit sözdizimi ve karmaşık veri yapılarını temsil edebilme yeteneği sayesinde JSON, API’lerden istemci tarafı web uygulamalarına kadar her şeyi destekleyen, modern web geliştirmesinin ayrılmaz bir parçası olmuştur. 

Bu eğitimde, Python’da JSON ile çalışmanın temellerini; serileştirme, seriden çıkarma, JSON dosyalarını okuma ve yazma, biçimlendirme ve daha fazlasını inceleyeceğim. Bu eğitimin sonunda şunları yapabileceksiniz:

  • JSON’u ve artılarını ile eksilerini anlayın
  • JSON’un kullanım alanlarını belirleyin ve yaygın alternatiflerle karşılaştırın
  • Python’da JSON verilerini etkili biçimde serileştirin ve seriden çıkarın
  • Python programlama dilinde JSON verileriyle çalışın
  • `json` kütüphanesini kullanarak Python’da JSON verilerini biçimlendirin
  • JSON verileriyle çalışırken performansı optimize edin
  • API geliştirmede JSON verilerini yönetin.

JSON Nedir?

JSON (JavaScript Object Notation), birçok programlama dili ve çerçevesi tarafından yaygın olarak benimsenen ve desteklenen, hafif ve dilden bağımsız bir veri değişim biçimidir. Basit, okunması kolay ve karmaşık veri yapılarını destekleyen bir biçime ihtiyaç duyulduğunda, farklı bilgisayar programları arasında kolayca paylaşılabildiği için veri alışverişi adına iyi bir tercihtir.

JSON’un mükemmel kullanım örneği, form doldurduğunuz bir web sitesinde bilgilerin işlenmek üzere sunucuya gönderilmesi gibi web tabanlı uygulamalar arasında veri alışverişine ihtiyaç duyulduğunda ortaya çıkar. 

JSON bu senaryo için idealdir çünkü XML gibi diğer biçimlere kıyasla daha az bant genişliği ve depolama alanı gerektiren hafif ve verimli bir formattır. Ayrıca, iç içe geçmiş nesneler ve diziler gibi karmaşık veri yapılarını destekler; bu da farklı sistemler arasında yapılandırılmış verileri temsil etmeyi ve paylaşmayı kolaylaştırır. JSON biçiminin birkaç başka kullanım alanı da şunlardır:

  1. Uygulama Programlama Arayüzleri (API’ler). JSON, farklı sistemlerin ve uygulamaların birbiriyle iletişim kurmasını sağlayan API’ler (Application Programming Interfaces) oluşturmak için yaygın olarak kullanılır. Örneğin, birçok web tabanlı API, farklı uygulamalar arasında veri alışverişi için veri formatı olarak JSON kullanır; bu da farklı programlama dilleri ve platformlarla entegrasyonu kolaylaştırır.
  2. Yapılandırma Dosyaları. JSON, yapılandırma verilerini saklamak ve almak için basit ve okunması kolay bir biçim sunar. Buna bir uygulamanın kullanıcı arayüzü düzeni veya kullanıcı tercihleri gibi ayarlar dahildir.
  3. Nesnelerin İnterneti (IoT).  IoT cihazları sıklıkla büyük miktarda veri üretir; bu veriler JSON kullanılarak sensörler ve diğer cihazlar arasında daha verimli şekilde saklanıp iletilebilir. 

JSON istek süreci

JSON verilerine örnek

python_obj = {
  "name": "John Doe",
  "age": 30,
  "email": "john.doe@example.com",
  "is_employee": True,
  "hobbies": [
    "reading",
    "playing soccer",
    "traveling"
  ],
  "address": {
    "street": "123 Main Street",
    "city": "New York",
    "state": "NY",
    "zip": "10001"
  }
}

print(python_obj)

Bu örnekte bir kişiyi temsil eden bir JSON nesnesi var. Nesnenin name, age, email ve is_employee gibi birkaç özelliği bulunuyor. hobbies özelliği, üç dize içeren bir dizidir. address özelliği ise street, city, state ve zip gibi kendi içinde birkaç özelliği olan bir nesnedir.

JSON verilerinin genellikle anahtar-değer çiftleri serisi olarak biçimlendirildiğini, anahtarın bir dize, değerin ise dize, sayı, boolean, dizi veya nesne gibi çeşitli türlerde temsil edildiğini unutmayın.

JSON kullanmanın Artıları ve Eksileri

Aşağıda, JSON kullanmanın bazı olumlu ve olumsuz yönlerini derledik. 

JSON dosyasıyla çalışmanın artıları:

JSON’un başlıca avantajlarından bazıları şunlardır:

  1. Hafif ve okunması kolay. JSON dosyaları, teknik olmayan kullanıcılar için bile okumak ve anlamak kolaydır. Ayrıca hafiftir; bu da internet üzerinden kolayca iletilebilecekleri anlamına gelir.
  2. Birlikte çalışabilirlik: JSON dosyaları birlikte çalışabilirdir; yani farklı sistemler ve platformlar arasında kolayca değiş tokuş edilebilir. Bunun nedeni, JSON’un yaygın olarak desteklenen standart bir format olması ve birçok uygulama ile hizmetin veri alışverişi için JSON kullanmasıdır. Sonuç olarak JSON dosyalarıyla çalışmak, bir sistemin farklı parçalarını entegre etmeyi veya farklı uygulamalar arasında veri paylaşmayı kolaylaştırabilir.
  3. Doğrulaması kolay: JSON dosyaları, belirli bir yapıya veya kurallar bütününe uyduğundan emin olmak için bir şemaya karşı kolayca doğrulanabilir. Bu, verideki hataları ve tutarsızlıkları erkenden yakalamaya yardımcı olarak zaman kazandırabilir ve ileride sorunları önleyebilir. JSON şemaları ayrıca JSON dosyasında saklanan veriler için otomatik olarak dokümantasyon üretmekte de kullanılabilir.

JSON dosyasıyla çalışmanın eksileri:

  1. Karmaşık veri yapıları için sınırlı destek: JSON dosyaları çok çeşitli veri türlerini desteklese de, grafikler veya ağaçlar gibi karmaşık veri yapılarının saklanması için uygun değildir. Bu, belirli veri türleriyle JSON dosyaları üzerinden çalışmayı zorlaştırabilir.
  2. Şema zorlaması yok: JSON dosyaları herhangi bir şemayı zorunlu kılmaz; bu da bir JSON dosyasında tutarsız veya geçersiz verilerin saklanmasının mümkün olduğu anlamına gelir. Bu durum, dosyadaki verilere dayanan uygulamalarda hatalara ve bug’lara yol açabilir.
  3. Sorgulama ve indeksleme yeteneklerinin sınırlı olması: JSON dosyaları, geleneksel veritabanlarıyla aynı düzeyde sorgulama ve indeksleme yetenekleri sunmaz. Bu, büyük bir JSON dosyasında karmaşık aramalar yapmayı veya belirli veri alt kümelerini almayı zorlaştırabilir.

Veri Alışverişi için JSON’a En İyi Alternatifler


Veri alışverişi veya depolama için JSON’a alternatif olarak kullanılabilecek, her birinin kendine özgü güçlü ve zayıf yönleri olan çeşitli biçimler vardır. JSON’a popüler alternatiflerden bazıları şunlardır:

  1. XML (Extensible Markup Language). XML, verileri tanımlamak için etiketler ve öznitelikler kullanan bir işaretleme dilidir. JSON’dan daha ayrıntılı bir formattır; ancak şema doğrulaması ve belge yapısı için güçlü desteğe sahiptir.
  2. YAML (Yet Another Markup Language). YAML, okunması ve yazılması kolay olacak şekilde tasarlanmış, insan tarafından okunabilir bir veri serileştirme biçimidir. XML’den daha özlüdür ve karmaşık veri türleri ile yorumlar için destek sunar.
  3. MessagePack. MessagePack, JSON’dan daha kompakt ve verimli olacak şekilde tasarlanmış ikili bir serileştirme biçimidir. Karmaşık veri türlerini destekler ve düşük bant genişlikli ağlar üzerinden veri aktarımı için idealdir.
  4. Protocol Buffers. Protocol Buffers, Google tarafından geliştirilen ikili bir serileştirme biçimidir. Son derece verimli olacak şekilde tasarlanmıştır ve şema doğrulaması için güçlü desteğe sahiptir; bu da onu büyük ölçekli dağıtık sistemler için ideal kılar.
  5. BSON (Binary JSON). BSON, JSON biçimini ek veri türleri ve verimlilik için optimizasyonlarla genişleten bir ikili serileştirme biçimidir. MongoDB veritabanlarında verimli veri depolama ve aktarımı için tasarlanmıştır.

Hangi veri değişim biçiminin seçileceği, uygulamanın özel kullanım durumuna ve gereksinimlerine bağlıdır. JSON, sadeliği, çok yönlülüğü ve yaygın benimsenmesi nedeniyle popüler bir seçenek olmaya devam eder; ancak XML, YAML, MessagePack, Protocol Buffers ve BSON gibi diğer biçimler belirli kullanım durumları için daha uygun olabilir.

JSON verileriyle çalışmak için Python kütüphaneleri

JSON dosyalarıyla çalışmak için kullanabileceğiniz birkaç popüler Python paketi vardır:

  1. json. JSON verilerini kodlamak ve kodunu çözmek için yöntemler sağlayan yerleşik bir Python paketidir.
  2. simplejson. Python’a özgü türler için destek sunan, hızlı bir JSON kodlayıcı ve kod çözücüdür.
  3. ujson. Python için son derece hızlı bir JSON kodlayıcı ve kod çözücüdür.
  4. jsonschema. JSON verilerini belirli bir şemaya göre doğrulamanın bir yolunu sağlar.

JSON Serileştirme ve Seriden Çıkarma

JSON serileştirme ve seriden çıkarma, veriyi iletmek veya depolamak için JSON verilerini Python nesneleri veya dizgiler gibi diğer biçimlere dönüştürme ve geri çevirme süreçleridir.

Serileştirme, bir nesneyi veya veri yapısını bir JSON dizgesine dönüştürme işlemidir. Bu işlem, verilerin diğer sistemler veya programlar tarafından okunabilir bir biçimde iletilmesi veya depolanması için gereklidir. JSON serileştirme, verilerin sıklıkla farklı sistemler veya uygulamalar arasında iletildiği web geliştirmede yaygın bir tekniktir.

Seriden çıkarma ise bir JSON dizgesini tekrar bir nesneye veya veri yapısına dönüştürme işlemidir. Bu işlem, verilerin bir programda veya sistemde kullanılabilmesi için gereklidir. JSON seriden çıkarma, genellikle bir API’den veya başka bir kaynaktan alınan verileri ayrıştırmak için web geliştirmede kullanılır.

JSON serileştirme ve seriden çıkarma, web geliştirmeden veri analizine ve ötesine kadar çeşitli bağlamlarda JSON verileriyle çalışmak için önemli tekniklerdir. Birçok programlama dili, serileştirme ve seriden çıkarmayı kolay ve verimli hale getirmek için yerleşik kütüphaneler veya paketler sunar.

İşte serileştirme ve seriden çıkarma için json kütüphanesinden yaygın bazı işlevler.

1. json.dumps()

Bu işlev, bir Python nesnesini JSON dizgesine serileştirmek için kullanılır. dumps() işlevi tek bir argüman, yani Python nesnesini alır ve bir JSON dizgesi döndürür. İşte bir örnek:

import json

# Python object to JSON string
python_obj = {'name': 'John', 'age': 30}

json_string = json.dumps(python_obj)
print(json_string)  

# Expected output: {"name": "John", "age": 30}

2. json.loads()

Bu işlev, bir JSON dizgesini bir Python nesnesine ayrıştırmak için kullanılır. loads() işlevi tek bir argüman, yani JSON dizgesini alır ve bir Python nesnesi döndürür. İşte bir örnek: 

import json

# JSON string to Python object
json_string = '{"name": "John", "age": 30}'

python_obj = json.loads(json_string)

print(python_obj)  

# Expected output: {'name': 'John', 'age': 30}

3. json.dump()

Bu işlev, bir Python nesnesini serileştirip bir JSON dosyasına yazmak için kullanılır. dump() işlevi iki argüman alır: Python nesnesi ve dosya nesnesi. İşte bir örnek:

import json

# serialize Python object and write to JSON file
python_obj = {'name': 'John', 'age': 30}
with open('data.json', 'w') as file:
    json.dump(python_obj, file)

# No expected output

4. json.load()

Bu işlev, bir JSON dosyasını okuyup içeriğini bir Python nesnesine ayrıştırmak için kullanılır. load() işlevi tek bir argüman, yani dosya nesnesini alır ve bir Python nesnesi döndürür. İşte bir örnek:

import json

# read JSON file and parse contents
with open('data.json', 'r') as file:
    python_obj = json.load(file)
print(python_obj)  

# Expected output: {'name': 'John', 'age': 30}

Python ve JSON farklı veri türlerine sahiptir; Python, JSON’dan daha geniş bir veri türü yelpazesi sunar. Python, kümeler ve sözlükler gibi karmaşık veri yapılarını saklayabilirken JSON; dizgeler, sayılar, boolean’lar, diziler ve nesnelerle sınırlıdır. Bazı farklara bakalım:

Python

JSON

dict

Object

list

Array

tuple

Array

str

String

int

Number

float

Number

True

true

False

false

None

null

Python list’ini JSON’a dönüştürme

Bir Python list’ini JSON biçimine dönüştürmek için json kütüphanesindeki json.dumps() yöntemini kullanabilirsiniz.

import json

my_list = [1, 2, 3, "four", "five"]

json_string = json.dumps(my_list)

print(json_string)

# Expected output: [1, 2, 3, "four", "five"]

Bu örnekte, tamsayılar ve dizgelerin karışımından oluşan my_list adında bir listemiz var. Daha sonra json.dumps() yöntemini kullanarak listeyi JSON biçimli bir dizgeye dönüştürüyor ve bunu json_string değişkeninde saklıyoruz.

JSON Verilerini Biçimlendirme

Python’da, json.dumps() işlevi JSON çıktısını biçimlendirme ve sıralama seçenekleri sunar. İşte bazı yaygın seçenekler:

1. Indent

Bu seçenek, çıktı JSON dizgesinde girinti için kullanılacak boşluk sayısını belirtir. Örneğin:

import json

data = {
    "name": "John",
    "age": 30,
    "city": "New York"
}

json_data = json.dumps(data, indent=2)

print(json_data)

# Expected output: a JSON formatted string with an indentation of 2 spaces for each level of nesting:
# {
#   "name": "John",
#   "age": 30,
#   "city": "New York"
# }

2. Sort_keys

Bu seçenek, çıktı JSON dizgesindeki anahtarların alfabetik sırada sıralanıp sıralanmayacağını belirtir. Örneğin:

import json

data = {
    "name": "John",
    "age": 30,
    "city": "New York"
}

json_data = json.dumps(data, sort_keys=True)

print(json_data)

# Expected output: {"age": 30, "city": "New York", "name": "John"}

3. Separators

Bu seçenek, çıktı JSON dizgesinde kullanılacak ayraçları belirtmenizi sağlar. separators parametresi iki dizgeden oluşan bir demet alır; ilk dizge JSON nesnesindeki anahtar-değer çiftleri arasındaki ayraç, ikincisi ise JSON dizilerindeki öğeler arasındaki ayraçtır. Örneğin:

import json

data = {
    "name": "John",
    "age": 30,
    "city": "New York"
}

json_data = json.dumps(data, separators=(",", ":"))

print(json_data)

# Expected output: a JSON formatted string with a comma separator between key-value pairs and a colon separator between keys and values:
# {"name":"John","age":30,"city":"New York"}

Python Örneği - API’lerde JSON verileri

import requests
import json

url = "https://jsonplaceholder.typicode.com/posts"
response = requests.get(url)

if response.status_code == 200:
    data = json.loads(response.text)
    print(data)
else:
    print(f"Error retrieving data, status code: {response.status_code}")

# Expected output: a JSON object as the response of the request

BİÇİMLENDİRİLMİŞ ÇIKTI:

Çıktı verileri

Bu kod, Python’daki requests ve json kütüphanelerini kullanarak "https://jsonplaceholder.typicode.com/posts" adresine bir istek gönderir ve veri alır. requests.get(url) satırı isteği gerçekleştirir ve yanıtı response değişkeninde saklar.

if response.status_code == 200: satırı, yanıt kodunun 200 olup olmadığını kontrol eder; bu, isteğin başarılı olduğu anlamına gelir. İstek başarılıysa, kod yanıt metnini json.loads() yöntemiyle bir Python sözlüğüne yükler ve data değişkeninde saklar.


Bu konuyla ilgili daha fazla bilgi edinmek isterseniz Web API’leri, Python Requests ve Python’da HTTP İsteği Gerçekleştirme başlıklı eğitimimize göz atın.

Python’da JSON Performansını Optimize Etme

Python’da büyük miktarda JSON verisiyle çalışırken, kodunuzun verimli çalışmasını sağlamak için performansı optimize etmek önemlidir. İşte Python’da JSON performansını iyileştirmek için bazı ipuçları:

  1. cjson veya ujson kütüphanelerini kullanın. Bu kütüphaneler Python’daki standart JSON kütüphanesinden daha hızlıdır ve JSON serileştirme ile seriden çıkarmanın performansını önemli ölçüde artırabilir.
  2. Gereksiz dönüşümlerden kaçının. Python nesneleri ile JSON verileri arasında sürekli dönüşüm yapmak performans açısından maliyetlidir. Mümkünse doğrudan JSON verileriyle çalışın ve gereksiz dönüşümlerden kaçının.
  3. Büyük JSON verileri için jeneratör kullanın. Büyük miktarda JSON verisiyle çalışırken jeneratör kullanmak bellek kullanımını azaltmaya ve performansı artırmaya yardımcı olabilir.
  4. Ağ ek yükünü en aza indirin. JSON verilerini ağ üzerinden iletirken, aktarılan veri miktarını azaltmak performansı iyileştirebilir. gzip gibi sıkıştırma tekniklerini kullanarak JSON verilerini ağ üzerinden göndermeden önce boyutunu küçültün.
  5. Önbellekleme kullanın. Aynı JSON verilerine sık sık erişiyorsanız, veriyi önbelleğe almak, yükleme isteklerinin sayısını azaltarak performansı artırabilir.
  6. Veri yapısını optimize edin: JSON verilerinin yapısı da performansı etkileyebilir. Daha basit ve daha düz bir veri yapısı, karmaşık ve iç içe yapılara göre performansı iyileştirebilir.

JSON biçiminin sınırlamaları

JSON birçok uygulamada veri alışverişi için popüler bir biçim olsa da, dikkat edilmesi gereken bazı uygulama sınırlamaları vardır:

  1. Bazı veri türleri için destek eksikliği. JSON; ikili veriler, tarih ve saat gibi bazı veri türleri için sınırlı desteğe sahiptir. Bu türleri JSON’da temsil etmek için çözümler bulunsa da, serileştirme ve seriden çıkarmayı daha karmaşık hale getirebilir.
  2. Yorum desteğinin olmaması. YAML ve XML gibi diğer biçimlerin aksine JSON, yorumları desteklemez. Bu durum, JSON verilerine bağlam veya dokümantasyon sağlamak için yorum eklemeyi zorlaştırabilir.
  3. Genişletmeler için sınırlı esneklik. JSON, özel özellikler veya $schema özelliği aracılığıyla genişletmeleri desteklese de, format XML veya YAML gibi diğer biçimler kadar genişletme esnekliği sunmaz.
  4. Anahtar sırasını koruma standardının olmaması. JSON, bir nesnedeki anahtarların sırasını korumanın standart bir yoluna sahip değildir; bu da JSON nesnelerini karşılaştırmayı veya birleştirmeyi zorlaştırabilir.
  5. Döngüsel başvurular için sınırlı destek. JSON, bir nesnenin kendisine geri başvurduğu döngüsel başvurular için sınırlı desteğe sahiptir. Bu, bazı veri yapılarını JSON’da temsil etmeyi zorlaştırabilir.

JSON verileriyle çalışırken bu sınırlamaların farkında olmak, biçimin ihtiyaçlarınıza uygun olduğundan emin olmak ve serileştirme, seriden çıkarma ve veri temsiliyle ilgili olası sorunlardan kaçınmak açısından önemlidir.

Sonuç

JSON, modern web geliştirmede veri alışverişi için çok yönlü ve yaygın olarak kullanılan bir biçimdir ve Python, JSON verileriyle çalışmak için güçlü araçlar sağlar. İster bir API geliştiriyor olun ister istemci tarafı web uygulamalarıyla çalışıyor olun, Python’da JSON’un temellerini anlamak modern geliştiriciler için temel bir beceridir. Bu eğitimde açıklanan tekniklerde ustalaşarak, Python’da JSON verileriyle çalışmaya ve bu güçlü veri değişim biçiminin gücünden yararlanan sağlam, ölçeklenebilir uygulamalar oluşturmaya bir adım daha yaklaşacaksınız.

Yaygın depolama biçimlerinde tutulan verileri içe aktarmak için ardışık düzenler oluşturmayı öğrenmek isterseniz, pandas ile Kolaylaştırılmış Veri Alımı kursumuza göz atın. Bir analiz kütüphanesi olan pandas’ı kullanarak; anket yanıtlarının bulunduğu bir e-tablodan, kamu hizmeti taleplerinin bulunduğu bir veritabanından ve popüler bir inceleme sitesinin API’sinden veri alacaksınız. 

SSS

Belleğe sığmayacak kadar büyük JSON dosyalarını nasıl yönetebilirim?

Belleğe sığmayacak kadar büyük JSON dosyalarıyla çalışmak için verileri kademeli olarak Python’un ijson kütüphanesini kullanarak işleyebilir veya JSON daha küçük nesneler serisi şeklinde yapılandırılmışsa dosyayı satır satır okuyabilirsiniz. Örneğin:

import ijson

with open('large_file.json', 'r') as file:
    for item in ijson.items(file, 'item'):
        print(item)  # Process each JSON item individually

Python'da iki JSON nesnesini nasıl birleştiririm?

İki JSON nesnesini birleştirmek için önce bunları Python sözlüklerine seriden çıkarın, ardından bir sözlüğü diğerinin içeriğiyle güncelleyin:

import json

json1 = '{"name": "Alice", "age": 25}'
json2 = '{"city": "New York", "hobbies": ["reading", "cycling"]}'

dict1 = json.loads(json1)
dict2 = json.loads(json2)

dict1.update(dict2)
merged_json = json.dumps(dict1)

print(merged_json)
# Output: {"name": "Alice", "age": 25, "city": "New York", "hobbies": ["reading", "cycling"]}

JSON verileri yorum içerebilir mi ve Python'da bunu nasıl ele alabilirim?

JSON yerel olarak yorumları desteklemez; ancak yorumlar içeren (ör. // veya /* */ kullanan) standart dışı bir JSON dosyasıyla çalışıyorsanız, ayrıştırmadan önce dosyayı ön işlemden geçirerek yorumları kaldırabilirsiniz. İşte bir örnek:

import json
import re

with open('file_with_comments.json', 'r') as file:
    content = file.read()

# Remove comments
content = re.sub(r'//.*?$|/\*.*?\*/', '', content, flags=re.DOTALL | re.MULTILINE)

data = json.loads(content)
print(data)

Moez Ali's photo
Author
Moez Ali
LinkedIn
Twitter

Veri Bilimci, PyCaret'in Kurucusu ve Yaratıcısı

Konular

Python hakkında daha fazla bilgi edinin

Kurs

Introduction to Databases in Python

4 sa
101K
In this course, you'll learn the basics of relational databases and how to interact with them.
Ayrıntıları GörRight Arrow
Kursa Başla
Devamını GörRight Arrow