Python JSON Okuma & Yazma & Dönüştürme İşlemleri
Python JSON işlemleri dersimizde örnekler yardımıyla Python’da JSON’u okumayı, yazmayı ve dönüştürmeyi öğreneceksiniz. Ayrıca, JSON’u sözlük (dict) veri tipine çevirme ve güzel yazdırmayı öğreneceksiniz.
JSON (JavaScript Object Notation), yapılandırılmış verileri temsil etmek için kullanılan popüler bir veri biçimidir. JSON biçimini kullanarak bir sunucu ve web uygulaması arasında veri iletmek ve almak oldukça yaygın kullanılan bir yöntemdir. Ayrıca kullanım basitliği ile de çok fazla tercih edilen bir haberleşme formatıdır. Bu dersimizde de JSON ile yapabileceğimiz tüm işlemlere bakmadan önce bir JSON verisinin neye benzediğine bakarak başlayalım.
{
"ad": "Jane",
"soyad": "Doe",
"hobiler": ["running", "sky diving", "singing"],
"yas": 25,
"eğitim": [
{
"lisans": "İTÜ",
"bölüm": "Bilgisayar Mühendisliği",
"not": 3.08
},
{
"yukseklisans": "Gazi Üniversitesi",
"bölüm": "Bilişim Sistemleri",
"not": 3.45
}
]
}
İşte bu bir JSON verisidir! Ne kadar da çok sözlük (dict
) veri tipine benziyor değil mi? Evet, çok benziyor ama değil maalesef. Farklarını küçük bir arama motoru araştırmasıyla bulabilirsiniz fakat önceliğimiz JSON ile yapabileceklerimiz. Öyleyse hemen başlayalım.
Not: Eğer Python Sözlükler (dictionary, dict
) konusu hakkında daha fazla bilgi almak istiyorsanız # Python Sözlükler dersimizi incelemenizi şiddetle tavsiye ederim. Böylece JSON dersini daha rahat anlayabilirsiniz.
1. JSON Kütüphanesini Dahil Etme
JSON (string veya JSON nesnesi içeren dosya) ile çalışmak için Python’un json
modülünü kullanabilirsiniz. Kullanmadan önce modülü içe aktarmanız gerekir.
import json
Kütüphaneyi projemize dahil ettikten sonra JSON ile neler yapabileceğimize teker teker ve detaylı olarak bakalım.
2. JSON Okuma İşlemleri
JSON dosyalarını okuyabilmek ve onları kullanabilmek için iki yöntemimiz var. Bunlardan birisi elimizdeki JSON dosyalarını içe aktarmak ve onları bir JSON objesine aktarmak veya yine elimizde olan bir JSON yapısındaki veriyi dönüştürme işlemine tabi tutarak dict
elde etmek. Şimdi her iki yöntemi de görelim.
2.1 JSON Verisini Sözlük (dict) Veri Tipine Çevirme
Elimizde olan JSON yapısına uygun bir string veri tipini loads()
fonksiyonunu kullanarak çevirme işlemini yapabiliriz. Bu dönüştirme işlemi sonucu bize bir sözlük (dict
) döndürür. Ardından sözlüğü dilediğinizce kullanabilirsiniz.
import json
kisi = '{"isim": "Yunus", "dil": ["İngilizce", "Almanca"]}'
kisi_dict = json.loads(kisi)
print(kisi_dict)
# Çıktı: {'isim': 'Yunus', 'dil': ['İngilizce', 'Almanca']}
print(kisi_dict['dil'])
# Çıktı: ['İngilizce', 'Almanca']
Örnekte olduğu gibi bir JSON formatını dict veri tipine çevirerek veri okuma işlemlerini rahatlıkla yapabildik.
2.2 JSON Dosyasını Okuma ve Sözlük (dict) Veri Tipine Çevirme
Bazı programlar ve çıktılar size direkt JSON dosyasını verir. Eğer sizinde elinizde .json
uzantılı bir dosya varsa bunu rahatlıkla okuyabilir ve dict veri tipine çevirerek kullanabilirsiniz.
import json
with open('dosya_yolu/kisi.json') as f:
veri = json.load(f)
print(veri)
# Çıktı: {'isim': 'Yunus', 'dil': ['İngilizce', 'Almanca']}
Burada önemli olan dosya içeriğinizin json formatına uygun olmasıdır. Ayrıca dosya okuma ve yazma işlemleri ile daha fazla bilgiye ulaşmak isterseniz Python Dosya Açma, Okuma, Yazma ve Düzenleme İşlemleri dersimizi inceleyebilirsiniz.
3. JSON a Çevirme & Yazma İşlemleri
Buraya kadar elimizde ki JSON formatında bulunan verileri dict
veri tipine çevirmeyi gördük. Şimdi ise yine elimizde hazır bulunan dict
veri tipinden nasıl JSON formatını elde edeceğimizi göreceğiz. Böylece JSON yapısını oluşturarak haberleşme veya herhangi bir uygulamada kullanabilirsiniz.
3.1 Sözlük (dict) Veri Tipinden JSON Tipine Çevirme
Sözlük veri tipindeki değişkenlerimizi dumps()
fonksiyonunu kullanarak JSON formatına çevirebiliriz.
import json
kisi_dict = {
'isim': 'Deniz',
'yas': 12,
'cinsiyet': 'K'
}
kisi_json = json.dumps(kisi_dict)
print(kisi_json)
# Çıktı: {"isim": "Deniz", "yas": 12, "cinsiyet": 'K'}
Bu dönüştürme işleminde hangi veri tipinin hangi veri tipine dönüşeceğini aşağıdaki tablodan inceleyebilirsiniz.
Veri Tipi | JSON Karşılığı |
---|---|
dict | object |
list , tuple | array |
str | string |
int , float , int | number |
True | true |
False | false |
None | none |
3.2 Sözlük (dict) Veri Tipinden JSON Dosyasına Çevirme ve Yazma
Sözlük veri tipindeki değişkenlerimizi dump()
fonksiyonunu kullanarak JSON dosyasına çevirebiliriz.
import json
kisi_dict = {
'isim': 'Deniz',
'yas': 12,
'cinsiyet': 'K'
}
with open('kisi.json', 'w') as json_dosya:
json.dump(kisi_dict, json_dosya)
Yukarı yer alan örnekte dict
veri tipini yeni bir kisi.json
dosya ismiyle JSON formatına dump
fonksiyonu sayesinde çevirmiş olduk.
4. JSON’u Daha Düzenli ve Okunabilir Yazdırma
JSON verilerini analiz etmek ve hatalarını ayıklamak için, verileri daha okunabilir bir biçimde yazdırmamız gerekebilir. Bu işlem, json.dumps()
ve json.dump()
yöntemine indent
ve sort_keys
ek parametreleri eklenerek yapılabilir. Hemen örneğimizi inceleyelim.
import json
kisi_string = '{"isim": "Kenan", "dil": "İngilizce", "sayi": [2, 1.6, null]}'
# Sözlük veri tipine çevirelim
kisi_dict = json.loads(kisi_string)
# Tekrardan JSON formatına düzenli bir şekilde çevirelim
print(json.dumps(kisi_dict, indent = 4, sort_keys=True))
JSON formatına uygun bir string
veri tipini önce dict
veri tipine, ardından tekrar bu dict
veri tipini Json formatına çevirme işlemi sırasında kullandığımız indent
ve sort_keys
parametreleri ile çıktımız aşağıdaki gibi olacaktır.
{
"dil": "Almanca",
"isim": "Kenan",
"sayi": [
2,
1.6,
null
]
}
Böylece JSON daha okunabilir ve anlaşılabilir bir hale gelmiş olur. Buradaki indent
satır girintilerindeki boşluk sayısını, sort_keys
ise veri anahtarlarının alfabetik sıralamayla dizilmesini sağlar.
5. [BONUS] JSON Ek İşlemler
JSON ile temel işlemleri yukarıda başlık başlık işledik. Şimdi ise JSON verileriyle en çok kullanılan işlemleri nasıl yapabileceğinizi hızlıca anlatalım.
5.1 Python JSON u XML Dosyasına Çevirme
Elinizdeki JSON u XML dosya tipine çevirmek için dicttoxml
kütüphanesini kullanabilirsiniz. Kullanımı ve örnekleri için Tıklayınız.
5.2 Python XML i JSON Dosyasına Çevirme
Elinizdeki XML i JSON dosya tipine çevirmek için json2xml
kütüphanesini kullanabilirsiniz. Kullanımı ve örnekleri için Tıklayınız.
5.3 Python JSON u CSV Dosyasına Çevirme
Elinizdeki JSON u CSV dosya tipine çevirmek için linkteki örneği inceleyebilirsiniz. Kullanımı için Tıklayınız.