Python → JSON 변환기
Python dict, dataclass, Pydantic 모델을 붙여넣으면 깔끔한 JSON으로 돌려드립니다.
이 도구가 하는 일
API 호출용 페이로드, 테스트 픽스처, 문서 예시 같은 용도로 Python dict이나 dataclass를 JSON으로 바꿔본 적이 있다면, 그 작업이 얼마나 귀찮은지 아실 겁니다. 따옴표는 전부 바꿔야 하고, True/False는 true/false로, None은 null로 고쳐야 하며, datetime과 Decimal 값은 손으로 직렬화해야 하죠. 여기에 Python 코드를 붙여넣으면 json.dumps나 Pydantic의 .model_dump_json()이 내놓는 것과 똑같은 유효한 JSON이 나옵니다 — 연결 코드를 직접 쓸 필요 없이요.
단순한 문자열 치환이 아닙니다. 이 변환기는 Python이 직렬화 시점에 실제로 어떻게 동작하는지 이해하고 처리합니다. 작은따옴표 문자열은 큰따옴표로, tuple은 JSON 배열로, set과 frozenset도 배열로, datetime과 date는 RFC 8259에 따라 ISO-8601 문자열로, Decimal은 숫자로, Enum 멤버는 .value로 내보냅니다. 중첩 객체는 그 자리에서 펼쳐지므로, 다른 dataclass 리스트를 담고 있는 dataclass도 왕복이 깔끔하게 맞습니다.
Pydantic v1과 v2 모두 지원합니다. Field(alias=...)로 지정한 별칭은 출력 키에 그대로 반영되고, None인 Optional 필드는 누락되지 않고 null로 보존되며, Literal/Union 타입은 런타임 값으로 출력됩니다. 여러 클래스를 담은 모듈 전체를 붙여넣어도 괜찮습니다 — 각 클래스가 최상위 항목으로 나옵니다.
사용 방법
세 단계면 됩니다. 두 줄짜리 dict든 300줄짜리 모듈이든 동작 방식은 똑같습니다.
Convert 누르기
초록색 Convert 버튼을 누르세요. 도구가 Python을 읽고, 객체 그래프를 빌드한 다음 json.dumps와 같은 방식으로 직렬화합니다 — 가독성을 위해 들여쓰기까지 적용해서요. 실행되는 동안 간단한 로딩 표시가 잠깐 나타납니다.
JSON 복사하기
오른쪽 패널이 JSON 스펙을 완벽히 따르는, 예쁘게 포맷된 JSON으로 채워집니다. 요청 본문, pytest 픽스처, FastAPI OpenAPI 예시, 설정 파일 등 필요한 곳에 복사해 붙여넣으세요.
실제로 유용한 순간
API 요청 픽스처
Pydantic 요청 모델은 있는데 Postman, curl, Swagger 예시용 JSON 본문이 필요할 때. 모델을 붙여넣고 JSON을 받으면 끝입니다.
pytest와 단위 테스트 데이터
테스트 파일의 dataclass 인스턴스를 통합 테스트나 스냅샷 비교용 JSON 시드 파일로 변환하세요 — 커스텀 인코더 없이요.
설정 파일 스캐폴딩
수십 개의 필드를 가진 settings dataclass가 바로 편집 가능한 JSON 템플릿이 됩니다. 열 번째 중괄호를 손으로 치는 고통에서 벗어나세요.
문서와 코드 동기화
README나 API 레퍼런스용 JSON 예시를 이미 가지고 있는 실제 모델에서 바로 생성하세요. 문서가 코드와 따로 놀 일이 없어집니다.
자주 묻는 질문
Pydantic v1과 v2 모두 동작하나요?
네, 둘 다 지원합니다. Field(alias=...), model_config, Field(default_factory=...), 중첩 모델까지 모두 포함해서요. 별칭은 출력 키를 그대로 바꿔주며, Pydantic 자체가 내놓는 결과와 일치합니다.
datetime, Decimal, UUID는 어떻게 처리되나요?
datetime, date, time은 ISO-8601 문자열로 나옵니다. Decimal은 따옴표 없는 JSON 숫자로, UUID는 표준 16진수 문자열로, bytes는 base64 인코딩됩니다. Python json 모듈에 커스텀 인코더를 붙였을 때의 일반적인 관례와 같습니다.
Enum, Literal, Optional은 어떻게 되나요?
Enum 멤버는 .value로 출력됩니다. Literal["a", "b"]는 런타임 문자열 그대로 나오고, None인 Optional[X] 필드는 누락되지 않고 JSON null로 통과합니다 — 출력 형태가 타입 힌트와 맞도록요.
여러 클래스가 들어있는 모듈 전체를 붙여넣어도 되나요?
네. 모듈 안에 인스턴스가 있는 최상위 클래스 각각이 JSON의 항목으로 나옵니다. 중첩 dataclass와 Pydantic 모델은 그 자리에서 펼쳐지고, 부모 클래스에서 상속받은 필드도 포함됩니다.
제 코드가 어딘가에 저장되나요?
코드는 변환 목적으로만 백엔드에 전송됩니다. 로그를 남기거나 저장하지 않습니다. 다만 어떤 온라인 도구든 마찬가지로, 정말 민감한 내용이라면 붙여넣기 전에 한 번 훑어보시는 게 좋습니다.
Python에 이상한 게 있으면요 — lambda, 제너레이터, 파일 핸들 같은 것들은?
직렬화할 수 없는 값(함수, 제너레이터, 열린 소켓 등)은 변환 전체를 깨뜨리지 않고 null로 나옵니다. 소스에 문법 오류가 있다면 눈에 띄는 건 먼저 고쳐주세요 — 파서는 스타일 차이에는 너그럽지만 깨진 코드는 실행할 수 없습니다.
함께 쓰면 좋은 도구들
Python → JSON은 퍼즐의 한 조각일 뿐입니다. 같이 쓰기 좋은 도구들을 모아뒀습니다: