JSON'dan Python Veri Sınıfına
Bir JSON örneğini yapıştırın ve her alan için tür ipuçları içeren bir @dataclass (veya Pydantic BaseModel) elde edin, uygun durumlarda str, int, float, bool, Optional[...] ve List[...]. Yatay olarak yerleştirilmiş nesneler kendi veri sınıflarını oluşturur. Çıkış PEP 8 formatında olup bir Python dosyasına yapıştırmaya hazırdır.
JSON'ı bir veri sınıfına nasıl dönüştürürüz
-
1
JSON'u yapıştırın
Tek bir örnek yeterlidir; birden fazla örnek, hangi alanların null olabileceğinin tespitini iyileştirir.
-
2
Stili seçin
Standart kütüphane `@dataclass`, Pydantic `BaseModel` veya yalnızca statik tip denetimi için `TypedDict`.
-
3
Python sürümünü seçin
`list[str]` sentaksı için 3.9+, `|` birleşim türleri için 3.10+, `Optional[...]`/`List[...]` için ise 3.8.
-
4
Kodu kopyalayın
Bir kök sınıf ve iç içe yerleştirilmiş sınıflar. Bunları bir `.py` dosyasına yapıştırın ve içe aktarın.
Örnek çıktı: standart @dataclass
Giriş:
{ "first_name": "Alice", "age": 30, "email": null, "tags": ["admin"] }
Çıkış (Python 3.10+):
from dataclasses import dataclass, field
from typing import Optional
@dataclass
class User:
first_name: str
age: int
tags: list[str] = field(default_factory=list)
email: Optional[str] = None
Aynı girdi, Pydantic ile
from typing import Optional
from pydantic import BaseModel
class User(BaseModel):
first_name: str
age: int
email: Optional[str] = None
tags: list[str] = []
Tür Haritalaması
| JSON değer | Python türü |
|---|---|
| karakter dizisi | str |
| tam sayı | int |
| Sayı (onluk) | float |
| Boole | bool |
| boş (tek başına görüldü) | None |
| boş + diğer tür | Optional[T] |
| ISO tarih dizisi | date (Python 3.7+) |
| ISO tarih ve saat | datetime |
| Bir türden oluşan dizi | list[T] |
| karışık dizi | list[Union[T1, T2]] |
| nesne | iç içe sınıf |
Dataclass, Pydantic ve TypedDict
| Tür | Kullanım Zamanı |
|---|---|
@dataclass |
Standart kütüphane çözümü, çalışma zamanı doğrulaması yoktur |
| Pydantic | Çalışma zamanı doğrulama ve zorlama (FastAPI, ayarlar) |
TypedDict |
Sadece statik tip kontrolü; örnek sınıfı yoktur |
attrs |
attrs üzerinde standartlaştırılmış eski projeler |
Yaygın Hatalar
- Değiştirilebilir varsayılan değerler için
default_factory’i unutmak.list[str] = []varsayılan değeri, tüm örneklerde ortak kullanılan bir veri sınıfı tuzağıdır; bunun yerinefield(default_factory=list)’i kullanın. - İsteğe bağlıdır; varsayılan değer yoktur.
email: Optional[str]’de= Nonebulunmuyorsa bile argüman gereklidir. JSON semantiklerinize uygun olmalıdır. - Pydantic v1 vs v2: Sintaks ve davranışlar farklıdır (
Configsınıfı ilemodel_configarasında;validatorilefield_validatorarasında). Jeneratör varsayılan olarak v2 versiyonuna ayarlanır. - Birleşim sırası deseriyalizasyon için önemlidir. Pydantic, türleri tanımlama sırasına göre değerlendirir. Belirsizlik olasıyse en spesifik türü önce belirtin (örneğin
int’yistr’ten önce).
Sık Sorulan Sorular
Doğrulama işlemi gerektirmeyen basit değer tutucuları için veri sınıfıdır.çalışma zamanında doğrulama, zorlama veya FastAPI entegrasyonu gerekiyorsa Pydantic kullanılır. Sadece statik tip kontrolüne ihtiyaç duyuluyor ve sınıf örnekleri istenmiyorsa TypedDict tercih edilir (örneğin mypy, pyright ortamlarında).
Python 3.10 ve üzeri sürümlerinde | birleşmeleri ile list[str] sözdizimi yerel olarak desteklenmektedir; bu nedenle uygun değildir. Ancak PEP 563 dizgi anotasyonları aracılığıyla daha yeni sözdizimin kullanılması gereken 3.7–3.9 sürümleri projeleri için faydalıdır. Jeneratör gerekli olduğunda uyarı verir.
Her iç içe yerleştirilmiş nesne kendi sınıfını oluşturur. Kök sınıf bu nesneleri adlarıyla referans eder; böylece türleri tekrar kullanabilirsiniz. Dairesel referanslar tespit edilir ve işaretlenir.
Evet, Pydantic tarzını seçerseniz. FastAPI, istek/yanıt türleri olarak doğrudan Pydantic modellerini kullanır. İç veri işleme için @dataclass daha hafif bir yapıya sahiptir.
İlgili Araçlar
FPS Sayacı
requestAnimationFrame ile tarayıcı FPS değerini ölçün: yumuşatma, en düşük ve en yüksek kare hızı, uyarı eşiği ve isteğe bağlı grafik. Yerel çalışır, yükleme ve API yoktur.
Webpack Yapılandırma Oluşturucu
Kısa bir formdan webpack 5 için bir webpack.config.js oluşturun: entry, çıkış klasörü ve modu ayarlayın; ardından TypeScript, Babel, bir CSS yükleyici, HtmlWebpackPlugin ve bir dev sunucu açın.
Kurgusal telefon numarası oluşturucu
Beş ülkede resmen ayrılmış aralıklardan 50 adede kadar kurgusal numara üretin.
Dosya Boyutu Dönüştürücü
Bayt, KB, MB, GB, TB ve ikili IEC birimleri (KiB, MiB, GiB, TiB) arasında, ondalık ve ikiliyi dilediğiniz gibi birleştirerek dönüşüm yapın.
Telefon numarası doğrulayıcı
Telefon numarasının ülkeye göre yapısını denetleyin; bölge, tür, E.164, uluslararası, ulusal ve RFC 3966 biçimlerini görün.
Rastgele adres oluşturucu
Arayüz maketleri ve testler için üç basitleştirilmiş biçimde 1–20 adres benzeri kayıt oluşturun.
Araç diğer dillerde mevcuttur
- JSON do klasy danych w Pythonie [PL]
- JSON a Dataclass de Python [ES]
- JSON에서 Python 데이터 클래스로 변환하기 [KO]
- JSON vers Dataclass Python [FR]
- JSON naar Python-dataclass [NL]
- JSON para Dataclass em Python [PT]
- JSON ถึงคลาสข้อมูลใน Python [TH]
- Từ JSON đến lớp dữ liệu Python [VI]
- فئة بيانات من JSON إلى بايثون [AR]
- JSON till Python-dataklass [SV]
- JSONからPythonデータクラスへの変換 [JA]
- JSON ke Dataclass Python [ID]
- JSON zu Python Dataclass [DE]
- JSON to Python Dataclass [EN]
- JSON in Dataclass Python [IT]
- JSON в класс данных для Python [RU]
- 从 JSON 到 Python 数据类 [ZH]