Python JSON Ayrıştırma: Serileştirme ve Seriden Çıkarma

Python'da JSON verilerini nasıl okuyacağınızı, yazacağınızı ve ayrıştıracağınızı öğrenin. json.loads, json.dumps ve JSON kodlayıcılarını/kod çözücülerini özelleştirme konusunda uzmanlaşın.

Editör'de deneyin

Genel Bakış

JSON (JavaScript Object Notation), modern web API'lerine, yapılandırmalarına ve veritabanı yüklerine hakim olan hafif veri değişim formatıdır. JSON yapıları Python sözlüklerine ve listelerine benzediğinden, bunlar arasında çeviri yapmak inanılmaz derecede kusursuzdur. Python, JSON dizelerini Python nesnelerine ayrıştırmayı ve Python nesnelerini tekrar JSON dizelerine dönüştürmeyi kolaylaştıran yerleşik bir "json" modülüyle donatılmıştır.

Bir Python nesnesini (sözlük gibi) ham bir JSON dizesine çevirme işlemine Serileştirme veya kodlama adı verilir. Bu, 'json.dumps()' (dizeler için) ve 'json.dump()' (doğrudan dosyaya yazmak için) tarafından gerçekleştirilir. JSON'u güzelleştirmek için "girinti" veya niteliklerin alfabetik olarak sıralanmasını sağlamak için "sort_keys" gibi biçimlendirme parametrelerini kontrol edebilirsiniz. Tersine, bir JSON dizesinin Python sözlüğüne ayrıştırılmasına Seri Kaldırma adı verilir ve "json.loads()" ve "json.load()" yoluyla yürütülür.

Dizeler, sayılar, listeler ve dikteler gibi standart Python türleri otomatik olarak JSON'a serileştirilirken, özel nesneler (sınıflar veya tarih-saat nesneleri gibi) bunu yapmaz. Özel bir nesneyi doğrudan kodlamaya çalışmak bir "TypeError" hatasına neden olur. Bunun üstesinden gelmek için geliştiricilerin "json.JSONEncoder"dan miras alan özel bir kodlayıcı sınıfı oluşturması ve sınıfları okunabilir sözlükler halinde serileştirmek için ".default()" yöntemini geçersiz kılması gerekir. JSON manipülasyonunda uzmanlaşmak, harici web hizmetleriyle iletişim kurmanın anahtarıdır.

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

Bir sözlüğü JSON dizesine dönüştürme ve yerleşik json kitaplığını kullanarak onu geri ayrıştırma.

json_demo.py
Editör'de deneyin
import json

# Python Dictionary representing a user profile
user_profile = {
    "name": "Alex",
    "is_premium": True,
    "skills": ["Python", "Docker"],
    "age": 28
}

# Serialize dictionary to JSON string
json_string = json.dumps(user_profile, indent=2)
print("--- JSON String ---")
print(json_string)

# Deserialize JSON string back to dictionary
parsed_dict = json.loads(json_string)
print("\n--- Parsed Python Dictionary ---")
print(f"Name: {parsed_dict['name']}")
print(f"First Skill: {parsed_dict['skills'][0]}")
Terminal Çıkışı
--- JSON String ---
{
  "name": "Alex",
  "is_premium": true,
  "skills": [
    "Python",
    "Docker"
  ],
  "age": 28
}

--- Parsed Python Dictionary ---
Name: Alex
First Skill: Python

Adım Adım Uygulama

  • Yük gönderme ve REST API'lerinden veri okuma
  • Yapılandırma tercihlerini settings.json dosyalarında saklama
  • Yapılandırılmış yüklerin mikro hizmetler arasında geçirilmesi

Sıkça Sorulan Sorular

json.dump ve json.dumps arasındaki fark nedir?

json.dump ('s' olmadan), JSON verilerini doğrudan bir dosya akışına yazar. json.dumps ('s' ile birlikte) verileri bir Python dize değişkenine serileştirir.

JSON kod çözme hatalarını nasıl ele alıyorsunuz?

Hatalı biçimlendirilmiş JSON dizelerini zarif bir şekilde işlemek için ayrıştırma kodunuzu 'json.JSONDecodeError' yakalayan bir try/hariç bloğuna sarın.

İlgili Konular

Önerilen Python Kaynakları

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