Python JSON Okuma & Yazma & Dönüştürme İşlemleri
4 min read

Python JSON Okuma & Yazma & Dönüştürme İşlemleri

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 TipiJSON Karşılığı
dictobject
listtuplearray
strstring
intfloatintnumber
Truetrue
Falsefalse
Nonenone

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.