JSON to Pydantic Converter
Generate a Python Pydantic BaseModel class from a JSON sample — infers types, nested models, lists, and Optional fields.
from typing import Optional
from pydantic import BaseModel, Field
class Address(BaseModel):
street: str
city: str
zip_code: str
class Order(BaseModel):
order_id: int
total: float
shipped: bool
class RootModel(BaseModel):
id_: int = Field(alias="id")
name: str
email: str
is_active: bool
balance: float
signup_ip: None = None
tags: list[str]
address: Address
orders: list[Order]
How JSON to Pydantic conversion works
Pydantic (v2) uses type-annotated classes that subclass BaseModel to validate and parse data — the same shape FastAPI request/response bodies use. This tool walks your JSON sample and infers a matching model: strings become str, whole numbers become int, decimals become float, booleans become bool, arrays become list[...], and nested objects become their own named BaseModel classes (capitalized from the parent key, singularized for list items — e.g. an "orders" array of objects produces an Order model).
Fields that are null in the sample, or that are missing from some array items, are wrapped in Optional[...] (or X | None if you enable the modern union syntax) with a default of None. Keys that aren't valid Python identifiers — reserved words, names starting with a digit, or non-alphanumeric characters — are renamed and mapped back to the original JSON key with Field(alias="..."), so Model.model_validate(json_data) still round-trips correctly. Everything runs locally in your browser; nothing is uploaded.
Related tools: JSON to Python Dict · JSON to TypeScript · JSON to Go Struct · JSON Formatter
Private & free — this tool runs entirely in your browser.