Python'da JSON Dosyası Nasıl Okunur ve Ayrıştırılır

Yerleşik json modülünü kullanarak Python'da JSON dosyalarını nasıl okuyacağınızı, ayrıştıracağınızı ve yükleyeceğinizi öğrenin. JSON dizelerini sözlüklere (veya tam tersi) dönüştürme konusunda uzmanlaşın.

Bu Çözümü Editör'de deneyin

Genel Bakış

JSON (JavaScript Object Notation), API'ler, yapılandırma dosyaları ve veri depolama için en popüler veri formatıdır. Python, JSON verilerini okumayı, ayrıştırmayı ve yazmayı inanılmaz derecede kolaylaştıran yerleşik bir "json" modülüyle birlikte gelir. JSON nesneleri Python sözlükleriyle mükemmel bir şekilde eşleştiğinden ve JSON dizileri Python listeleriyle eşlendiğinden, JSON ile çalışmak doğaldır.

JSON'u harici bir dosyadan okumak için, bir dosya akışını ayrıştıran ve JSON yapılarını Python veri türlerine çeviren 'json.load()' işlevini kullanırsınız. JSON verileri belleğe zaten bir dize olarak yüklenmişse, bunun yerine `json.loads()` işlevini kullanırsınız ('s' dize anlamına gelir). Doğru işlevin seçilmesi ayrıştırıcının çökmesini önler.

JSON ile çalışırken kodlama ve olası biçimlendirme hatalarını ele almak en iyi uygulamadır. 'open()' ifadesi içinde 'encoding='utf-8'' kullanılması, betiğinizin özel karakterlerde hata vermesini önler. Dosya işlemlerini "json.JSONDecodeError" yakalayan bir "try-hariç" bloğunda sarmalamak, JSON dosyası hatalı biçimlendirilmişse uygulamanızın sorunsuz bir şekilde bozulmasına olanak tanır.

Kod ve Yürütme Çıkışı

Bu kod, örnek bir JSON dosyası yazmayı, onu okumayı ve bir Python sözlüğüne ayrıştırmayı ve bir JSON dizesini işlemeyi gösterir.

read_json.py
Editör'de deneyin
import json

# Let's write a mock JSON file first
sample_data = {
    "user": "developer123",
    "skills": ["python", "javascript", "sql"],
    "active": True
}
with open("data.json", "w", encoding="utf-8") as f:
    json.dump(sample_data, f, indent=4)

# 1. Reading from a JSON file (using json.load)
with open("data.json", "r", encoding="utf-8") as file:
    data_from_file = json.load(file)
    print("File Content type:", type(data_from_file).__name__)
    print("User skill list:", data_from_file["skills"])

# 2. Reading from a JSON string (using json.loads)
json_string = '{"host": "localhost", "port": 5432, "ssl": false}'
data_from_str = json.loads(json_string)
print("\nString Content type:", type(data_from_str).__name__)
print("Database host:", data_from_str["host"])
Terminal Çıkışı
File Content type: dict
User skill list: ['python', 'javascript', 'sql']

String Content type: dict
Database host: localhost

Adım Adım Uygulama

  • Yerleşik json modülünü betiğinize aktarın.
  • JSON dosyasını dosya olarak open("filename.json", "r", encoding='utf-8") kullanarak açın.
  • İçeriği bir Python sözlüğüne ayrıştırmak için dosya nesnesini json.load(file) dosyasına iletin.
  • Belleğe önceden yüklenmiş bir ham JSON dizesini ayrıştırmanız gerekiyorsa json.loads(string_data) öğesini kullanın.

Sıkça Sorulan Sorular

json.load() ve json.loads() arasındaki fark nedir?

json.load(), dosya benzeri bir akış nesnesini (diskten okuma) kabul ederken json.loads(), JSON içeriğini içeren standart bir dize veya bayt nesnesini (bellekten okuma) kabul eder.

Özel sınıflar için JSON serileştirme hatalarını nasıl ele alabilirim?

Python'un json modülü, özel sınıf örneklerini varsayılan olarak serileştiremez. json.JSONEncoder'ı genişleten özel bir kodlayıcı sınıfı sağlamalı veya önce bir yardımcı yöntem kullanarak örneğin niteliklerini bir sözlüğe çıkarmalısınız.

İlgili Konular

Önerilen Python Kaynakları

İlgili etkileşimli eğitimler, yardımcı sayfalar ve kod karşılaştırmalarıyla bilginizi genişletin.