İçeriğe atla
%100 yerel

JSON Python dataclass

JSON örneğini yazılan Python sınıflarına dönüştürün — dataclass, Pydantic, TypedDict veya NamedTuple.

Giriş
Çıkış

JSON Python dataclass

Bir JSON nesnesini veya dizisini yapıştırın ve bu araç otomatik olarak her alan için bir tür çıkarsayarak tam tür ek açıklamalarıyla ilgili Python sınıflarını oluşturur. Kodunuza uyan çıktı stilini seçin: basit @dataclass, istekler ve yanıtları doğrulamak için Pydantic BaseModel, mevcut sözlük tabanlı kodu yazarak TypedDict veya hafif değişmez kayıtlar için NamedTuple. İç içe geçmiş nesneler kendi sınıfları olur, dosya hemen çalışması için doğru sırada tanımlanır; aynı şekilli nesneler — bir kayıt dizisinin her öğesi gibi — her biri için ayrı bir kopya oluşturmak yerine tek bir sınıfı yeniden kullanır.

Seçenekler, oluşturulan kodun muhafazakar mı yoksa modern mi olduğunu kontrol eder. “Null alanlar için isteğe bağlı” seçeneği, örneğinizde null olan bir alanı yararlı olmayan bare None yerine Optional (veya Any) türüne dönüştürür; “Varsayılan değerleri ekle” bunu “= None” ile tamamlar, böylece bir örnek oluştururken alan atlanabilir ve zorunlu alanlar, Python sözdiziminin gerektirdiği yerde varsayılan değerleri olan alanlardan önce otomatik olarak yeniden sıralanır. “Geçersiz alan adları için diğer ad” seçeneği, geçerli Python tanımlayıcıları olmayan JSON anahtarlarını yönetir — “first-name” gibi kısa çizgili bir anahtar first_name özniteliğine dönüşür, dataclass alan meta verileri veya Pydantic Field(alias=...) aracılığıyla orijinal anahtara bağlanır, böylece serileştirme doğru şekilde işlemeye devam eder. “List[T] yerine list[T] kullan” seçeneği modern PEP 585 yerleşik jenerikler ile bazı projelerin hâlâ gerektirdiği eski typing.List stili arasında geçiş yapar ve __future__ ek açıklaması anahtarı, Optional[X]/Union[X, Y] öğesini tüm kod genelinde yeni X | None / X | Y sözdizimi olarak değiştirir.

Tür çıkarımı, dizeleri, tam sayıları, kayan nokta sayılarını ve Boole değerlerini birbirinden ayırt eder, karışık dizi içeriğini tek bir Union türüne birleştirir ve kök nesne dizisine makul bir RootItem sınıf adı verir ve altında Root = list[RootItem] diğer adıyla bulunur. Bir JSON sayısı kendi int/float işaretçisini taşımadığından, ondalık noktası olmayan bir sayı her zaman int olarak okunur — ayrıştırılmış bir kasıtlı “36.0” kurtarmanın hiçbir yolu yoktur.

Her şey yerel olarak tarayıcınızda çalışır: yapıştırdığınız JSON — genellikle gerçek bir API yanıtı veya veritabanı kaydı — hiçbir yere gönderilmeden ayrıştırılır ve dönüştürülür. Oluşturulan Python'u kopyalayın, .txt dosyası olarak indirin veya çıktıyı girişe geri gönderin ve geliştirmeye devam edin.

FAQ

Hangi çıktı stilleri desteklenir?
Dört: @dataclass (standart kütüphane stili), Pydantic BaseModel (doğrulama ve JSON ayrıştırması için), TypedDict (çalışma zamanı sınıfı olmaksızın düz sözlüğün üzerindeki tür ek açıklamaları) ve NamedTuple (tanımlama gruplarına benzer değişmez kayıtlar).
İç içe geçmiş nesneler ve nesne dizileri nasıl işlenir?
Her farklı nesne şekli kendi sınıfı olur, onu içeren alandan sonra adlandırılır ve ona başvuran sınıftan önce tanımlanır. Aynı alan ve tür kümesine sahip nesneler çoğaltmak yerine tek bir sınıfı yeniden kullanır — aynı şekilli kayıtların dizisi tek bir öğe sınıfı oluşturur.
Geçerli Python tanımlayıcıları olmayan JSON anahtarlarına ne olur?
Geçerli bir öznitelik adına temizlenirler (örneğin “first-name” → first_name). “Geçersiz alan adları için diğer ad” açıkken, orijinal anahtar yerel bir diğer ad (dataclass alan meta verileri, Pydantic Field(alias=...)) veya TypedDict ve NamedTuple için sonunda yorum aracılığıyla korunur; bunların yerleşik bir diğer ad mekanizması yoktur.
Int ve float arasında güvenilir bir şekilde ayırım yapabilir mi?
Her sayıyı örneğinizde kesirli bir bölüm olup olmadığına göre sınıflandırır, ancak JSON kendisi tam sayılar için int ile float arasında ayrım yapmaz — 36.0 olarak gönderilen bir değer ayrıştırıldıktan sonra 36'dan ayırt edilemez, bu nedenle int olarak okunur.
JSON'um bir yere yükleniyor mu?
Hayır. Ayrıştırma ve kod oluşturma tamamen tarayıcınızda gerçekleşir — yapıştırdığınız JSON ve ürettiği Python asla cihazınızı terk etmez.