Python · modèles API Pydantic

Alias Pydantic camelCase ↔ snake_case

Gardez les champs de modèles Python en snake_case et utilisez une convention JSON externe différente grâce aux alias.

Par Équipe éditoriale Camel Case ConverterPublié le 12 sept. 2026Dernière relecture

Utiliser alias_generator pour une convention externe

from pydantic import BaseModel, ConfigDict
from pydantic.alias_generators import to_camel

class UserProfile(BaseModel):
    model_config = ConfigDict(
        alias_generator=to_camel,
        validate_by_alias=True,
        validate_by_name=True,
    )

    first_name: str
    created_at: str

profile = UserProfile.model_validate({
    "firstName": "Ada",
    "createdAt": "2026-09-12",
})

print(profile.first_name)
print(profile.model_dump(by_alias=True))
# {'firstName': 'Ada', 'createdAt': '2026-09-12'}

Pydantic fournit to_camel et to_snake ; model_dump(by_alias=True) émet les noms externes.

Utiliser AliasGenerator lorsque validation et sérialisation diffèrent

from pydantic import AliasGenerator, BaseModel, ConfigDict
from pydantic.alias_generators import to_camel, to_snake

class UserProfile(BaseModel):
    model_config = ConfigDict(
        alias_generator=AliasGenerator(
            validation_alias=to_camel,
            serialization_alias=to_snake,
        ),
        validate_by_alias=True,
    )

    first_name: str
    created_at: str

profile = UserProfile.model_validate({
    "firstName": "Ada",
    "createdAt": "2026-09-12",
})

print(profile.model_dump(by_alias=True))
# {'first_name': 'Ada', 'created_at': '2026-09-12'}

AliasGenerator permet de définir séparément validation_alias et serialization_alias.

Points d’attention en production

  • Les alias de champ explicites peuvent prendre le pas sur les alias générés ; documentez les exceptions.
  • Préférez les alias de modèle lorsque Pydantic valide déjà le payload ; utilisez la conversion récursive pour du JSON non modélisé.
  • Utilisez model_dump(by_alias=True) pour sérialiser avec les noms externes.
  • Gardez la politique de nommage à la frontière modèle/sérialisation.

Tester la frontière JSON en ligne

Testez objets imbriqués, tableaux, exclusions, stop paths, préfixes, collisions et diff de clés avant l’implémentation.

Déposez un fichier .json ou choisissez-en un sur votre appareil

Les fichiers sont lus uniquement dans votre navigateur. Taille maximale : 5 Mo.

JSON converti
{
  "userProfile": {
    "firstName": "Ada",
    "createdAt": "2026-09-12"
  }
}

Analyse, lecture de fichier, formatage et conversion s’exécutent localement dans votre navigateur. Le JSON n’est pas envoyé à un serveur de conversion.