본문 바로가기
Python tips

Pydantic을 활용한 JSON, dict 다루기

by 스티브 십잡스 2024. 4. 1.

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로 변환한다.