Python · Pydantic API models
Pydantic camelCase ↔ snake_case aliases
Python model field는 snake_case로 유지하면서 외부 JSON은 다른 네이밍 규칙을 사용할 수 있습니다. schema를 model이 소유한다면 재귀 dict 변환보다 alias generator가 적합합니다.
하나의 외부 규칙에는 alias_generator 사용
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은 to_camel과 to_snake를 제공하며 model_dump(by_alias=True)로 외부 이름을 출력할 수 있습니다.
validation과 serialization이 다르면 AliasGenerator 사용
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로 validation_alias와 serialization_alias를 각각 설정할 수 있습니다.
프로덕션 고려사항
- 명시적 field alias가 생성 alias보다 우선할 수 있으므로 예외를 문서화하고 테스트하세요.
- Pydantic이 payload를 이미 검증한다면 model alias를 우선하고, 모델 없는 JSON에는 재귀 dict 변환을 고려하세요.
- 외부 field name으로 직렬화하려면 model_dump(by_alias=True)를 사용하세요.
- 외부 API casing이 business logic에 퍼지지 않도록 model/serialization 경계에 naming policy를 두세요.
JSON 경계 온라인 테스트
중첩 객체, 배열, 제외 키, stop path, 접두사, 충돌, key-only diff를 구현 전에 확인하세요.
.json 파일을 놓거나 기기에서 선택
파일은 브라우저에서만 읽습니다. 최대 크기: 5 MB.
변환된 JSON
{
"userProfile": {
"firstName": "Ada",
"createdAt": "2026-09-12"
}
}파싱, 파일 읽기, 포맷 및 키 변환은 모두 브라우저에서 로컬로 실행됩니다. JSON 입력은 변환 서버로 전송되지 않습니다.