JSON Schema → Pydantic
Convertissez JSON Schema en code de modèle Pydantic v2, dans votre navigateur. Collez le schema, obtenez une classe Python prête à coller. Utile pour les workflows LLM de structured output.
Saisissez une entrée ci-dessus pour voir le résultat.
À quoi ça sert ?
JSON Schema et Pydantic sont les deux manières principales de décrire un objet structuré — JSON Schema est la lingua franca pour OpenAPI, le function calling LLM et les structured outputs ; Pydantic est la lib de validation de facto en Python. Souvent vous avez l'un et il vous faut l'autre. Cet outil fait la conversion dans un sens : collez un JSON Schema, obtenez une classe Pydantic prête à poser dans un .py.
Quand l'utiliser
- Structured outputs LLM. Le
response_formatd'OpenAI et le tool-use d'Anthropic prennent du JSON Schema. Après conception, vous voulez généralement un modèle Pydantic pour valider et accéder aux champs en Python. - Génération de client OpenAPI. Une spec OpenAPI fournit du JSON Schema par body ; voie rapide vers des modèles Pydantic sans générateur complet.
- Migration Schema → Python. Système hérité avec validation JSON Schema à migrer vers Pydantic. Collez chaque schema, obtenez une classe de départ, raffinez.
- Scaffolding rapide. Forme esquissée en JSON dans un notebook ; transformez-la en vrai modèle d'un coller.
Ce que l'outil gère
type: objectavecproperties+required— classe BaseModel imbriquée.type: arrayavecitems—List[X].- Primitifs :
string→str,integer→int,number→float,boolean→bool,null→None. formatsur string :date-time→datetime,email→EmailStr,uri/url→HttpUrl,uuid→UUID.enum→Literal[...];const→Literal[X].oneOf/anyOf→Union[...]; une variante null se replie enOptional[...].type: ["string", "null"]→Optional[str].description→Field(..., description=...).default→ default du champ.minimum/maximum/minLength/maxLength→Field(ge=..., le=..., min_length=..., max_length=...).- Noms invalides en Python sont assainis et
alias=ajouté ; modèle configuré avecpopulate_by_name=True. - Objets imbriqués → classes imbriquées, nommées par
titles'il existe, sinon par le champ. $defs/definitions→ classes séparées.
Ce qu'il ne gère pas (encore)
$refexternes (URLs). Les locaux vers$defsmarchent.patternProperties— commentaire TODO.additionalPropertiesavec schema — commentaire TODO.- Composition
allOfmulti-base.allOfà un élément est déballé. - Validateurs custom basés sur
pattern— le champ sort, le regex est omis. Ajoutez un@field_validatoraprès si besoin.
Pièges courants
- Pydantic v2 vs v1. Sortie par défaut v2. Bascule via le dropdown si v1.
- La sortie est un point de départ. Relisez, surtout pour unions complexes et types récursifs.
- Les noms comptent. Le champ "Root class name" contrôle le nom de la classe top-level. Sous-classes :
titleou nom de champ. - Required vs Optional en v2. Required sans default utilise
.... Optional retombe surNoneenveloppé enOptional[T].