UTILS.
%100 tarayıcıda
🐍

JSON'dan Pydantic Modeline

Bir JSON örneğini Python Pydantic v2 model sınıflarına dönüştürün; @dataclass veya TypedDict çıktısı ve snake_case alan takma adları için geçişlerle.

çıktı

Bu araç hakkında

JSON'dan Pydantic Modeline aracı, yapıştırdığınız bir JSON örneğini Python model sınıflarına dönüştürür. Python ve FastAPI geliştiricileri sürekli olarak örnek API yanıtlarından Pydantic modelleri iskeletler ve bu dönüştürücü bunu tarayıcıda anında yapar. JSON'unuzu ayrıştırır, Python tiplerini özyinelemeli olarak çıkarır ve her nesne için bir sınıf üretir: dizeler str olur, ISO tarih-saat dizeleri datetime, yalnızca tarih dizeleri date, tam sayılar int, diğer sayılar float, boole değerleri bool, diziler List[T] ve iç içe nesneler PascalCase ile adlandırılan kendi model sınıfları olur.

Tüm ayrıştırma ve üretim JSON.parse ve düz JavaScript ile yerel olarak gerçekleşir, böylece yapıştırdığınız hiçbir şey makinenizden ayrılmaz. Çocuk sınıfları, onlara başvuran sınıflardan önce üretilir (topolojik sıra) ve başlık yalnızca gerçekten kullanılanları içe aktarır — pydantic'ten BaseModel ve Field, typing'den Optional / List / Union / Any ve ilgili olduğunda datetime / date. from __future__ import annotations her zaman dahil edilir, böylece ileri başvurular sıradan bağımsız olarak çalışır.

Bazı kardeş nesnelerde eksik olan veya null olarak görülen anahtarlar Optional[T] = None olur. Çıktı modu geçişi, Pydantic v2 BaseModel (varsayılan), stdlib @dataclass ve typing.TypedDict arasında geçiş yapar. camelCase veya geçersiz anahtarları yeniden adlandırmak ve modelin orijinal JSON'u yine de ayrıştırabilmesi için otomatik olarak Field(alias="originalKey") eklemek üzere snake_case alanlarını açın. Kodu kopyalayın veya .py dosyası olarak indirin.

Sık sorulan sorular

Hangi Python tipleri çıkarılır?
string str'ye, ISO tarih-saat datetime'a, yalnızca tarih date'e, tam sayı int'e, tam sayı olmayan sayı float'a, boole bool'a, dizi öğelerden birleştirilmiş T ile List[T]'ye ve nesne iç içe bir BaseModel sınıfına dönüşür. Null veya eksik değerler Optional[T] = None olur.
Bunun yerine bir dataclass veya TypedDict alabilir miyim?
Evet. Çıktı modu geçişi Pydantic v2 BaseModel (varsayılan), dataclasses içe aktarmalı stdlib @dataclass ya da typing.TypedDict sınıfı üretir. Tip çıkarımı aynıdır; yalnızca sınıf kabuğu ve içe aktarmalar değişir.
Tanımlayıcı olmayan veya camelCase anahtarlar nasıl işlenir?
snake_case alanları açıkken, userName gibi bir anahtar user_name ile birlikte Field(alias="userName") olur, böylece yine de gidip gelebilir. Python anahtar sözcüğü olan veya geçersiz tanımlayıcı olan anahtarlar her zaman takma adlanır, böylece üretilen kod geçerli olur.
Sınıflar doğru sırada mı?
Evet. İç içe çocuk sınıfları, onları kullanan ebeveyn sınıflardan önce bildirilir ve from __future__ import annotations dahil edilir, böylece modeller ileri başvuru hataları olmadan derlenir.

Daha fazla araç