Pydantic을 통해 Object를 JSON으로 Serialization 하거나
JSON을 Object로 Deserialization 할 수 있습니다.
import json
player = {
"team": "MTU",
"name": "박지성",
}
json_str = json.dumps(player, ensure_ascii=False).replace(' ', '')
print(json_str)
- json 라이브러리를 통해 dict를 json으로 변경
- 공백을 지워줘야 합니다.
from pydantic import BaseModel
class Player(BaseModel):
team: str
name: str
player = {
"team": "MTU",
"name": "박지성",
}
player_1 = Player(**player)
# deserialize
# dict -> object
print(player_1, type(player_1)) # team='MTU' name='박지성' <class '__main__.Player'>
player_2 = Player.model_validate(player)
print(player_2, type(player_2)) # team='MTU' name='박지성' <class '__main__.Player'>
- dict를 object 변경
# pydantic serialize
# object -> json str
print(player_1.model_dump_json()) # {"team":"MTU","name":"박지성"}
print(player_2.model_dump_json()) # {"team":"MTU","name":"박지성"}
- object를 json으로 변경
obj = Object() # 인스턴스 by class, pydantic class
vars(obj) # dict 변환
- object를 dict로 변경
from pydantic import BaseModel, ConfigDict, Field
from pydantic.alias_generators import to_camel
class CamelModel(BaseModel):
model_config = ConfigDict(
alias_generator=to_camel,
populate_by_name=True,
from_attributes=True,
)
class Response(CamelModel):
my_name: str # myName으로 변환됨.
...
- snake case를 camel case로 변환한다.
'Python tips' 카테고리의 다른 글
@property와 __call__ 비교 (0) | 2024.05.08 |
---|---|
map(), filter(), pipe()를 활용하여 데이터 다루기 (0) | 2024.04.08 |
python-dotenv, pydantic_settings를 통한 환경 변수 관리 (0) | 2024.03.28 |
f-string (0) | 2024.03.28 |
파일 읽기와 쓰기 (0) | 2024.03.25 |