UTILS.
۱۰۰٪ در مرورگر
🐍

تبدیل JSON به مدل Pydantic

یک نمونه JSON را به کلاس‌های مدل Pydantic v2 پایتون تبدیل کنید، با کلیدهای تغییر برای خروجی @dataclass یا TypedDict و aliasگذاری فیلدهای snake_case.

خروجی

درباره این ابزار

ابزار تبدیل JSON به مدل Pydantic یک نمونه JSON چسبانده‌شده را به کلاس‌های مدل پایتون تبدیل می‌کند. توسعه‌دهندگان پایتون و FastAPI دائماً مدل‌های Pydantic را از نمونه پاسخ‌های API می‌سازند، و این مبدل این کار را فوراً در مرورگر انجام می‌دهد. JSON شما را تجزیه می‌کند، انواع پایتون را به‌صورت بازگشتی استنتاج می‌کند و برای هر شیء یک کلاس تولید می‌کند: رشته‌ها به str، رشته‌های تاریخ‌-زمان ISO به datetime، رشته‌های فقط-تاریخ به date، اعداد صحیح به int، سایر اعداد به float، بولین‌ها به bool، آرایه‌ها به List[T]، و اشیای تودرتو به کلاس‌های مدل خودشان که در PascalCase نام‌گذاری می‌شوند.

همه تجزیه و تولید به‌صورت محلی با JSON.parse و JavaScript ساده رخ می‌دهد، پس هر چیزی که می‌چسبانید دستگاه شما را ترک نمی‌کند. کلاس‌های فرزند پیش از کلاس‌هایی که به آن‌ها ارجاع می‌دهند تولید می‌شوند (ترتیب توپولوژیک)، و سرآیند فقط چیزی را وارد می‌کند که واقعاً استفاده شده است — BaseModel و Field از pydantic، Optional / List / Union / Any از typing، و datetime / date در صورت مرتبط بودن. from __future__ import annotations همیشه گنجانده می‌شود تا ارجاع‌های رو-به-جلو صرف‌نظر از ترتیب کار کنند.

کلیدهایی که در برخی اشیای خواهر-برادر غایب هستند یا به‌صورت null دیده می‌شوند، به Optional[T] = None تبدیل می‌شوند. کلید تغییر output-mode بین Pydantic v2 BaseModel (پیش‌فرض)، @dataclass استاندارد، و typing.TypedDict جابه‌جا می‌شود. فیلدهای snake_case را روشن کنید تا کلیدهای camelCase یا نامعتبر تغییر نام دهند و به‌طور خودکار Field(alias="originalKey") اضافه شود تا مدل هنوز JSON اصلی را تجزیه کند. کد را کپی کنید یا آن را به‌عنوان یک فایل .py دانلود کنید.

پرسش‌های پرتکرار

کدام انواع پایتون استنتاج می‌شوند؟
string به str، تاریخ‌-زمان ISO به datetime، فقط-تاریخ به date، عدد صحیح به int، عدد غیرصحیح به float، بولین به bool، آرایه به List[T] که در آن T از عناصر ادغام می‌شود، و شیء به یک کلاس تودرتوی BaseModel. مقادیر null یا غایب به Optional[T] = None تبدیل می‌شوند.
آیا می‌توانم به‌جای آن dataclass یا TypedDict بگیرم؟
بله. کلید تغییر output-mode یک Pydantic v2 BaseModel (پیش‌فرض)، یک @dataclass استاندارد با import مربوط به dataclasses، یا یک کلاس typing.TypedDict تولید می‌کند. استنتاج نوع یکسان است؛ فقط پوسته کلاس و importها تغییر می‌کنند.
کلیدهای غیر-شناسه‌ای یا camelCase چگونه مدیریت می‌شوند؟
با روشن بودن فیلدهای snake_case، کلیدی مانند userName به user_name به‌همراه Field(alias="userName") تبدیل می‌شود تا همچنان رفت-و-برگشت کند. کلیدهایی که کلمات کلیدی پایتون یا شناسه‌های نامعتبر هستند همیشه aliasگذاری می‌شوند تا کد تولیدشده معتبر باشد.
آیا کلاس‌ها به‌درستی مرتب شده‌اند؟
بله. کلاس‌های فرزند تودرتو پیش از کلاس‌های والدی که از آن‌ها استفاده می‌کنند اعلان می‌شوند، و from __future__ import annotations گنجانده می‌شود، پس مدل‌ها بدون خطاهای ارجاع رو-به-جلو کامپایل می‌شوند.

ابزارهای بیشتر