UTILS.
100% trong trình duyệt
🐍

JSON sang Pydantic Model

Biến một JSON mẫu thành các lớp model Pydantic v2 của Python, với công tắc cho output @dataclass hoặc TypedDict và đặt bí danh trường snake_case.

đầu ra

Về công cụ này

Công cụ JSON sang Pydantic Model chuyển một JSON mẫu được dán vào thành các lớp model Python. Các lập trình viên Python và FastAPI liên tục dựng khung model Pydantic từ các phản hồi API mẫu, và bộ chuyển đổi này làm điều đó ngay lập tức trong trình duyệt. Nó phân tích JSON của bạn, suy luận kiểu Python đệ quy, và phát ra một lớp cho mỗi đối tượng: chuỗi trở thành str, chuỗi ngày-giờ ISO datetime, chuỗi chỉ có ngày date, số nguyên int, các số khác float, boolean bool, mảng List[T], và các đối tượng lồng nhau có lớp model riêng đặt tên PascalCase.

Mọi việc phân tích và sinh mã diễn ra cục bộ với JSON.parse và JavaScript thuần, nên không có gì bạn dán vào rời khỏi máy của bạn. Các lớp con được phát ra trước các lớp tham chiếu đến chúng (thứ tự tôpô), và phần header chỉ import những gì thực sự được dùng — BaseModel và Field từ pydantic, Optional / List / Union / Any từ typing, và datetime / date khi liên quan. from __future__ import annotations luôn được thêm vào để các tham chiếu tiến hoạt động bất kể thứ tự.

Các khóa thiếu ở một số đối tượng anh em, hoặc được thấy là null, trở thành Optional[T] = None. Công tắc chế độ output chuyển giữa Pydantic v2 BaseModel (mặc định), @dataclass của thư viện chuẩn, và typing.TypedDict. Bật trường snake_case để đổi tên các khóa camelCase hoặc không hợp lệ và tự động thêm Field(alias="originalKey") để model vẫn phân tích được JSON gốc. Sao chép mã hoặc tải xuống dưới dạng tệp .py.

Câu hỏi thường gặp

Những kiểu Python nào được suy luận?
string sang str, ngày-giờ ISO sang datetime, chỉ-ngày sang date, số nguyên sang int, số không nguyên sang float, boolean sang bool, mảng sang List[T] với T được hợp nhất từ các phần tử, và đối tượng sang một lớp BaseModel lồng nhau. Giá trị null hoặc thiếu trở thành Optional[T] = None.
Tôi có thể lấy dataclass hoặc TypedDict thay thế không?
Có. Công tắc chế độ output phát ra Pydantic v2 BaseModel (mặc định), một @dataclass của thư viện chuẩn với import dataclasses, hoặc một lớp typing.TypedDict. Việc suy luận kiểu là như nhau; chỉ khung lớp và các import thay đổi.
Các khóa không phải định danh hoặc camelCase được xử lý như thế nào?
Với trường snake_case bật, một khóa như userName trở thành user_name cộng thêm Field(alias="userName") để nó vẫn khứ hồi được. Các khóa là từ khóa Python hoặc định danh không hợp lệ luôn được đặt bí danh để mã sinh ra hợp lệ.
Các lớp có được sắp xếp đúng không?
Có. Các lớp con lồng nhau được khai báo trước các lớp cha dùng chúng, và from __future__ import annotations được thêm vào, nên các model biên dịch mà không có lỗi tham chiếu tiến.

Công cụ khác