Python'da JSON Nasıl Ayrıştırılır

Yayınlanan: 2022-02-09

JSON , veri alışverişi için popüler bir formattır. Python , JSON verilerini ayrıştırmak ve bunlarla çalışmak için yerleşik bir JSON modülüyle birlikte gelir. Ve bu eğitim size Python'da JSON ile çalışma hakkında her şeyi öğretecek.

Bu eğitimin sonunda şunları öğrenmiş olacaksınız:

  • JSON'un temelleri,
  • Python'da JSON dizeleri nasıl ayrıştırılır ve oluşturulur ve
  • Python'da JSON dosyalarından nasıl okunur ve yazılır.

Hadi başlayalım!

JSON nedir?

JSON , Java Skript Nesne Notasyonu anlamına gelir ve veri alışverişi için metin tabanlı bir biçimdir . JSON başlangıçta JavaScript nesnelerinden esinlenmiş olsa da , neredeyse tüm programlama dilleri JSON ile çalışmayı destekler.

API'lerle çalıştıysanız veya yapılandırma dosyalarını okuduysanız, muhtemelen JSON ile karşılaşmışsınızdır.

API'leri sorgularken JSON'da veri gönderir ve alırsınız. Ve JSON, yazılım uygulamalarında istemci-sunucu iletişiminde de yaygın olarak kullanılmaktadır. Ayrıca JSON'u genel amaçlı veri depolama için de kullanabilirsiniz.

JSON formatı bir Python sözlüğünün formatına çok benzer. Sözlükler, verileri anahtar/değer çiftlerinde depolayan Python'da yerleşik güçlü veri yapılarıdır.

Daha ileri gitmeden önce, burada dikkat edilmesi gereken birkaç nokta var:

  • Python'da bir JSON nesnesi sözlük olarak saklanır.
  • JSON'daki bir dizi, Python listesi olarak saklanır.
  • JSON'da Boole değerleri true ve false olarak belirtilir. Python'da bunlar Boolean True ve False dönüştürülür.

JSON'dan Python'a çevrilen veri türleri hakkında daha fazla ayrıntı için buradaki belgeleri okuyun.

json modülü Python standart kitaplığının bir parçası olduğundan, onu yüklemeniz gerekmez. Geçerli dizininize aşağıdaki gibi içe aktarabilirsiniz:

 import json

Python'da JSON Dizisi Nasıl Yüklenir

Python'da bir JSON dizesi yüklemek için genel sözdizimi şöyledir:

 <dict_obj> = json.loads(<json_str>)

Burada,

  • <dict_obj> , JSON dizesini yüklemek istediğiniz Python sözlüğüdür,
  • <json_str> herhangi bir geçerli JSON dizesidir.

Bu, <json_str> <dict_obj> sözlüğüne yükler.

Bir örnek kodlayalım. Burada json_str bir JSON dizesidir.

 json_str = ''' { "books": [ { "title": "The Wind in the Willows", "author": "Kenneth Grahame", "year": "1908" }, { "title": "To the Lighthouse", "author": "Virginia Woolf", "year": "1927" } ] } '''

Ve aşağıdaki kod parçası, load loads() yöntemini kullanarak JSON dizesi json_str bir Python sözlüğüne nasıl yükleyebileceğinizi gösterir. py_dict öğesinin bir Python sözlüğü olduğunu doğrulamak için yerleşik type() işlevini kullanabilirsiniz.

 py_dict = json.loads(json_str) type(py_dict) # Output: dict print(py_dict) # Output {'books': [{'title': 'The Wind in the Willows', 'author': 'Kenneth Grahame', 'year': '1908'}, {'title': 'To the Lighthouse', 'author': 'Virginia Woolf', 'year': '1927'}]}

Yukarıdaki kodda gösterildiği gibi, JSON dizesindeki tüm alanlar py_dict içindeki anahtar/değer çiftleridir.

Python'da JSON Dizeleri Nasıl Oluşturulur

Diyelim ki bir Python sözlüğünüz var. Peki ondan nasıl bir JSON dizesi yaratırsınız?

Bu sözdizimi ile dumps() yöntemini kullanarak bunu yapabilirsiniz:

 <json_str> = json.dumps(<dict_obj>)

Burada,

  • <dict_obj> , JSON dizesini oluşturmak istediğiniz Python sözlüğüdür,
  • <json_str> , elde edilen JSON dizesidir.

Böylece dumps() yöntemi, <dict_obj> öğesini bir JSON dizesi <json_str> <dict_obj> içine döker.

Mevcut Python sözlüğümüze py_dict . hadi yeni bir anahtar "movies" ekleyelim. Aşağıdaki kod parçacığında gösterildiği gibi yapabilirsiniz:

 py_dict["movies"] = [{"title":"The Imitation Game","year":"2014", "lang":"en","watched":True}]

Şimdi, dumps() yöntemini kullanarak değiştirilmiş sözlüğü yeni bir JSON dizesi json_str2 .

 json_str2 = json.dumps(py_dict) print(json_str2) # Output {"books": [{"title": "The Wind in the Willows", "author": "Kenneth Grahame", "year": "1908"}, {"title": "To the Lighthouse", "author": "Virginia Woolf", "year": "1927"}], "movies": [{"title": "The Imitation Game", "year": "2014", "lang": "en", "watched": true}]}

Yukarıdaki örnekte görebileceğiniz gibi, çıktı JSON dizesinin uygun biçimlendirme olmadan okunması zordur. Girinti eklemek için isteğe bağlı parametre indent kullanabilirsiniz.

Bunu, aşağıda gösterildiği gibi indent 2 gibi bir tam sayıya ayarlayarak yapabilirsiniz:

 json_str2 = json.dumps(py_dict, indent = 2) print(json_str2) # Output { "books": [ { "title": "The Wind in the Willows", "author": "Kenneth Grahame", "year": "1908" }, { "title": "To the Lighthouse", "author": "Virginia Woolf", "year": "1927" } ], "movies": [ { "title": "The Imitation Game", "year": "2014", "lang": "en", "watched": true } ] }

Çıktının girinti ile nasıl biçimlendirildiğini gözlemleyin ve takip etmesi kolay.

Not : Anahtarların alfabetik sıraya göre sıralanmasını istiyorsanız, sort_keys parametresini True olarak ayarlayabilirsiniz.

Aşağıdaki kod parçacığında da görebileceğiniz gibi, tuşlar artık alfabetik sıraya göre sıralanmıştır.

 json_str2 = json.dumps(py_dict, indent = 2, sort_keys=True) print(json_str2) # Output { "books": [ { "author": "Kenneth Grahame", "title": "The Wind in the Willows", "year": "1908" }, { "author": "Virginia Woolf", "title": "To the Lighthouse", "year": "1927" } ], "movies": [ { "lang": "en", "title": "The Imitation Game", "watched": true, "year": "2014" } ]

Ve tuşlar artık alfabetik sırayla görünür: "author" , "title" ve "year" .

Şimdiye kadar Python'da JSON dizeleriyle nasıl çalışılacağını öğrendiniz. Sonraki bölümde, JSON dosyalarıyla nasıl çalışacağınızı öğreneceksiniz.

Python'da JSON Dosyası Nasıl Okunur

Python'da bir JSON dosyasını okumak için aşağıdaki sözdizimini kullanın:

 json.load(<json-file>) # where <json-file> is any valid JSON file.

load() yöntemini değil, loads() () yöntemini nasıl kullandığımıza dikkat edin. loads() bir JSON dizesi yüklerken load() bir JSON dosyası yükler.

Python'da dosyalarla çalışırken bağlam yöneticilerini kullanmayı düşünmelisiniz. Ayrıca, bağlam yöneticisini kullanmadan dosyaları aşağıdaki gibi okumayı deneyebilirsiniz:

 my_file = open('students.json','r') contents = my_file.read() print(contents) file.close()

Dosyayı kapatmazsanız, potansiyel bir kaynak israfı olabilir.

Ancak bağlam yöneticileriyle çalışırken, dosya işlemleri tamamlandıktan sonra dosyalar otomatik olarak kapatılır.

Dosyaları okumak için aşağıda gösterildiği gibi bağlam yöneticisini kullanabilirsiniz:

 with open('students.json','r') as file: data = json.load(file) print(data) # Output {'students': [{'roll_num': 'cs27', 'name': 'Anna', 'course': 'CS'}, {'roll_num': 'ep30', 'name': 'Kate', 'course': 'PHY'}]}

Bir dosyadan okurken, modu yukarıdaki kodda 'r' ile gösterilen read olarak belirtin.

Not : Geçerli dizinde kolayca gezinmek için lütfen aşağıdaki resimde gösterildiği gibi JSON dosyasının main.py ile aynı klasörde olduğundan emin olun. JSON dosyanız farklı bir klasördeyse, dosyanın yolunu belirttiğinizden emin olun.

python-json-dosyasını oku
Python'da JSON dosyasını okuyun.

Sonraki bölümde, bir JSON dosyasına nasıl yazılacağını öğreneceksiniz.

Python'da JSON Dosyasına Nasıl Yazılır

Mevcut bir JSON dosyasına yazmak veya yeni bir JSON dosyası oluşturmak için, gösterildiği gibi dump() yöntemini kullanın:

 json.dump(<dict_obj>,<json_file>) # where <dict_obj> is a Python dictionary # and <json_file> is the JSON file

Bu nedenle, yukarıdaki sözdizimi <dict_obj> sözlüğünü <dict_obj> JSON dosyasına <json_file> .

Önceki bölümde py_dict vardı. Şimdi bunu yeni bir JSON dosyasına dökelim. Ve adını new_file.json koyalım.

Aşağıdaki kod hücresi, dump() işlevini nasıl kullanabileceğinizi gösterir:

 with open('new_file.json','w') as file: json.dump(py_dict,file)

Not : Bir dosyayı yazma modunda ( w ) açmak, dosya varsa içeriğin üzerine yazar. Dosya yoksa, dosya oluşturulur.

Yukarıdaki kod hücresini çalıştırdıktan sonra, mevcut çalışma dizininde yeni bir JSON dosyasının oluşturulduğunu göreceksiniz. Ve devam edip JSON dosyasının içeriğini inceleyebilirsiniz.

oluştur-json-dosyası-python
Python'da JSON dosyası oluşturun

Dosyalara yazarken temel amaç veri depolamadır. Biçimlendirmeyi korumak isterseniz, indent ve sort_keys parametrelerini de kullanabilirsiniz.

Çözüm

Hızlı bir özet yapmanın zamanı geldi.

Bu eğitimde şunları öğrendiniz:

  • JSON kullanmanın temelleri,
  • sırasıyla JSON dizesi ve JSON dosyalarını okumak için load( loads() ve load() yöntemlerinin nasıl kullanılacağı,
  • Python sözlüklerini sırasıyla JSON dizelerine ve JSON dosyalarına dökmek için dumps() ve dump() yöntemlerinin nasıl kullanılacağı.

Umarım bu öğreticiyi faydalı bulmuşsunuzdur. Mutlu öğrenme!

Ayrıştırmak, biçimlendirmek ve doğrulamak için JSON Araçlarına da bakabilirsiniz.