JSON Schema → Pydantic
Converteer JSON Schema naar Pydantic v2 modelcode, in je browser. Plak schema, krijg een ready-to-paste Python class. Handig voor LLM structured-output workflows.
Geef hierboven invoer om het resultaat te zien.
Waarvoor is dit?
JSON Schema en Pydantic zijn de twee belangrijkste manieren om een gestructureerd object te beschrijven — JSON Schema is de lingua franca voor OpenAPI specs, LLM function-calling en structured outputs; Pydantic is Python's de-facto data-validation library. Vaak heb je de één en je hebt de ander nodig. Deze tool doet de conversie in één richting: plak een JSON Schema, krijg een Pydantic class die je in een Python file kunt droppen.
Wanneer gebruiken
- LLM structured outputs. OpenAI's
response_formaten Anthropic's tool-use nemen beide JSON Schema. Nadat je de schema hebt ontworpen en getest, wil je meestal een Pydantic model om velden te valideren en te benaderen in Python. - OpenAPI client-generatie. Een OpenAPI spec geeft je JSON Schema voor elke request/response body; dit is een snelle manier om matching Pydantic models te krijgen zonder een volledige code-generator.
- Schema → Python migraties. Je erft een systeem dat JSON Schema gebruikt voor validatie en je wilt het naar Pydantic verplaatsen. Plak elke schema, krijg een startclass, verfijn.
- Snelle scaffolding. Je hebt de vorm in JSON geschetst in een notebook; verander het in een echt model met één plak.
Wat deze tool afhandelt
type: objectmetproperties+required— genereert een geneste BaseModel class.type: arraymetitems— genereertList[X].- Primitieven:
string→str,integer→int,number→float,boolean→bool,null→None. formatop string:date-time→datetime,email→EmailStr,uri/url→HttpUrl,uuid→UUID.enum→Literal[...];const→Literal[X].oneOf/anyOf→Union[...]; een null-variant vouwt naarOptional[...].type: ["string", "null"]arrays →Optional[str].description→Field(..., description=...).default→ field default.minimum/maximum/minLength/maxLength→Field(ge=..., le=..., min_length=..., max_length=...).- Field-namen die geen geldige Python identifiers zijn worden gesanit, en een
alias=wordt toegevoegd. Het model wordt geconfigureerd metpopulate_by_name=True. - Geneste objecten worden geneste classes, genoemd naar het veld als geen
titleis opgegeven. $defs/definitionsworden als aparte classes uitgegeven.
Wat deze tool (nog) niet afhandelt
- Externe
$ref(URL refs). Lokale refs naar$defswerken. patternProperties. Geeft een TODO-commentaar.additionalPropertiesmet een schema. Geeft een TODO-commentaar.- Multi-base
allOfcompositie. Single-elementallOfwordt unwrapped. - Custom validators op
pattern— emit het veld maar skip de regex. Voeg een Pydantic@field_validatortoe na plakken als je 'm nodig hebt.
Veelvoorkomende valkuilen
- Pydantic v2 vs v1. Default output is v2 (huidig). Switch via de dropdown als je op een v1 codebase zit.
- Output is een startpunt, geen eindpunt. Review het. Vooral voor complexe unions en recursieve types.
- Namen matteren. Het "Root class name"-veld bepaalt de top-level class-naam. Sub-classes:
titleindien aanwezig, anders het veld dat ze bevat. - Required vs Optional in v2. Een required veld zonder default gebruikt
.... Optional velden vallen terug opNoneen zijn gewikkeld inOptional[T].