LoginSignup
4
3

More than 3 years have passed since last update.

pydanticでキーがCamelCaseのjsonをsnake_caseのクラスにキャストする

Last updated at Posted at 2020-09-17

外部APIを使って実装するとき、REST APIの戻り値がCamelCaseなjsonであることもあります。例えば、PythonでAWSをboto3で操作するとき頻発します。

それではPythonのコーディング規約などを考えると少し困ったことになるのですが、pydanticalias_generatorという機能を使うと簡単にsnake_caseをキーにした型にキャストできます。

ドキュメントではto_camelという関数を自作していますが、私はAWSの操作で様々なクラスで利用するために外部ライブラリのinflectionを利用しています。

from pydantic import BaseModel
from inflection import camelize


class Voice(BaseModel):
    name: str
    language_code: str

    class Config:
        alias_generator = camelize


voice = Voice(**{'Name': 'Filiz', 'LanguageCode': 'tr-TR'})
print(voice.language_code)
#> tr-TR
print(voice.dict(by_alias=True))
#> {'Name': 'Filiz', 'LanguageCode': 'tr-TR'}

参考

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3