Skip to content

JSON to Python 클래스 변환기

온라인 JSON to Python 변환기. dataclass, Pydantic v2, TypedDict 클래스를 즉시 생성합니다. Optional 타입, camelCase alias 자동. 100% 브라우저, 무료.

트래킹 없음 브라우저 실행 무료
출력
0
Python 출력
0
실제 API 페이로드에 대해 Python 3.12+ 구문과 Pydantic v2 시맨틱에 맞춰 출력을 검증 완료. — Go Tools Team · Jul 3, 2026

JSON to Python 변환이란 무엇인가요?

JSON to Python 변환은 JSON 샘플을 바로 사용할 수 있는 Python 클래스 — 표준 라이브러리 dataclass, Pydantic v2 모델, 또는 TypedDict — 로 바꿔 줍니다. 그래서 API 응답이나 설정 파일을 위해 필드 정의를 손으로 쓸 필요가 없습니다. 이 Python 클래스 생성기는 올바른 타입(int, float, str, bool, Optional)을 추론하고, 중첩 객체를 명명된 클래스로 바꾸며, camelCase 키에 Pydantic alias를 추가합니다 — 모두 100% 브라우저에서 이뤄집니다.

예시

API 응답 → dataclass

{"id":101,"name":"Ada Lovelace","email":"ada@example.com","active":true,"roles":["admin","user"]}
from dataclasses import dataclass
from typing import List


@dataclass
class Root:
    id: int
    name: str
    email: str
    active: bool
    roles: List[str]

일반적인 REST 페이로드가 바로 사용할 수 있는 @dataclass가 됩니다. 정수는 int, 소수는 float으로 추론되고 배열은 List[str]이 됩니다.

중첩 객체(자식 클래스 먼저)

{"repo":"pydantic","owner":{"login":"samuelcolvin","id":100}}
from dataclasses import dataclass


@dataclass
class Owner:
    login: str
    id: int


@dataclass
class Root:
    repo: str
    owner: Owner

중첩 객체는 별도의 명명된 클래스가 됩니다. 자식 클래스(Owner)가 부모보다 먼저 출력되므로 from __future__ import annotations 없이도 코드가 실행됩니다.

camelCase → Pydantic v2 alias

{"login":"octocat","publicRepos":15,"createdAt":"2011-01-25"}
from pydantic import BaseModel, ConfigDict, Field


class Root(BaseModel):
    model_config = ConfigDict(populate_by_name=True)

    login: str
    public_repos: int = Field(alias="publicRepos")
    created_at: str = Field(alias="createdAt")

Pydantic 모드에서는 필드가 snake_case가 되고 Field(alias=...)가 원래 JSON 키로 다시 매핑하며, populate_by_name 덕분에 어느 방식으로든 모델을 만들 수 있습니다 — 그래서 실제 API 데이터를 왕복 검증할 수 있습니다.

객체 배열 → TypedDict(선택적 키)

{"users":[{"id":1,"nick":"x"},{"id":2}]}
from typing import List, Optional, TypedDict


class User(TypedDict):
    id: int
    nick: Optional[str]


class Root(TypedDict):
    users: List[User]

객체 배열은 하나의 요소 타입으로 병합됩니다. 일부 항목에 없는 키(nick)는 Optional이 됩니다. TypedDict는 런타임 오버헤드 없이 순수한 dict의 형태를 기술합니다.

JSON을 Python으로 변환하는 방법

  1. 1

    JSON 붙여넣기

    JSON 객체, 배열 또는 API 응답을 입력 상자에 넣으세요. 변환이 즉시 시작됩니다.

  2. 2

    dataclass, Pydantic, TypedDict 선택

    프로젝트에 맞게 출력 스타일을 토글하고, 루트 클래스의 이름을 기본값 Root에서 바꾸세요.

  3. 3

    복사 또는 다운로드

    생성된 Python을 한 번의 클릭으로 가져와 코드에 바로 붙여넣으세요.

Common Use Cases

타입이 지정된 API 클라이언트
REST나 GraphQL 응답 샘플을 requests나 httpx 클라이언트를 위한 Pydantic 모델이나 dataclass로 바꿉니다. 필드 정의를 손으로 쓸 필요가 없습니다.
설정과 픽스처 파싱
불러와서 검증해야 하는 JSON 설정 파일, 테스트 픽스처, 웹훅 페이로드의 모델을 생성합니다.
빠른 프로토타이핑과 타입 힌트
낯선 페이로드를 붙여넣으면 그 형태가 Python 타입으로 즉시 표시됩니다 — 새로운 API를 빠르게 탐색하거나 레거시 dict 코드에 TypedDict 힌트를 추가하는 방법입니다.

변환이 작동하는 방식

구조적 추론
각 객체는 명명된 클래스가 되며, 동일한 형태는 중복 제거되어 복사본이 아닌 하나의 클래스를 얻습니다. 객체 배열은 키 단위로 병합되고, 일부 항목에 없는 키는 Optional이 됩니다.
관용적인 세 가지 대상
dataclass는 의존성이 전혀 없고 Root(**data)를 위해 유효한 키를 보존합니다. Pydantic v2는 실제 검증을 위해 Field alias와 populate_by_name을 추가합니다. TypedDict는 정적 타입 검사기를 위해 순수한 dict를 기술하며, 키가 식별자가 아닐 때는 함수형 구문을 사용합니다.
올바르고 의존성이 가벼운 타입 지정
정수는 int(임의 정밀도, 오버플로 없음)로, 소수와 지수는 float으로, null만 있는 필드는 Optional[Any]로 매핑됩니다. typing import(Optional, List, Any)는 실제로 사용될 때만 추가됩니다.
100% 클라이언트 측
파싱과 생성이 네트워크 호출 없이 브라우저에서 실행되므로 데이터가 비공개로 유지됩니다.

깔끔한 Python 모델을 위한 팁

작업에 맞는 모드 선택
내부 데이터 홀더에는 dataclass를, 신뢰할 수 없는 입력을 검증하거나 파싱할 때는 Pydantic v2를, 기존 dict에 정적 타입 힌트만 필요할 때는 TypedDict를 사용하세요.
대표적인 샘플 붙여넣기
필드는 샘플이 그것을 생략할 때만 Optional로 표시되고, null만 있는 값은 Any로 폴백합니다. 값이 채워진 완전한 예시가 가장 정확한 타입을 만들어 냅니다.
루트 클래스 이름 짓기
읽기 쉽고 import 가능한 코드를 위해 기본값 Root 대신 의미 있는 루트 이름(예: User, ApiResponse)을 설정하세요.

자주 묻는 질문

JSON을 Python 클래스로 어떻게 변환하나요?
입력 상자에 JSON을 붙여넣으세요. 변환기가 브라우저에서 즉시 파싱하여 오른쪽에 Python 코드를 생성합니다. 토글로 dataclass, Pydantic v2, TypedDict 중 하나를 고른 다음 복사를 클릭하세요 — 업로드도, 계정도, 대기 시간도 없습니다.
dataclass, Pydantic, TypedDict 출력은 무엇이 다른가요?
dataclass는 의존성이 없는 표준 라이브러리 @dataclass를 제공하므로 단순한 데이터 홀더에 적합합니다. Pydantic v2는 런타임에 데이터를 검증하고 변환하는 BaseModel 클래스를 출력하므로 신뢰할 수 없는 API 응답을 파싱하기에 이상적입니다. TypedDict는 정적 타입 검사기(mypy, Pyright)를 위해 런타임 비용 없이 순수한 dict의 형태를 기술합니다. 모드를 전환하면 같은 JSON을 각 형태로 비교할 수 있습니다.
JSON에서 Pydantic 모델을 어떻게 생성하나요?
Pydantic v2 탭을 선택하세요. 필드는 snake_case로 변환되고 Field(alias="originalKey")가 붙어 모델이 camelCase JSON을 그대로 읽으며, model_config = ConfigDict(populate_by_name=True) 덕분에 필드 이름으로도 생성할 수 있습니다. Root.model_validate(data)로 페이로드를 파싱하세요 — Pydantic이 타입을 검증하고 잘못된 입력에는 명확한 오류를 발생시킵니다.
dataclass 출력은 camelCase 키를 어떻게 처리하나요?
dataclass에는 내장 alias가 없어서 Root(**data)가 계속 작동하도록, dataclass 모드는 원래 키가 유효한 Python 식별자일 때 그 키를 필드 이름으로 유지합니다(publicRepos는 publicRepos 그대로). alias와 함께 관용적인 snake_case를 원한다면 대신 Pydantic v2 모드를 사용하세요. 이 모드는 snake_case 필드를 정확한 JSON 키로 다시 매핑합니다.
선택적 필드와 null 필드는 어떻게 타입이 지정되나요?
어떤 키가 일부 배열 항목에는 있고 다른 항목에는 없으면 그 타입은 Optional로 감싸집니다. 항상 null이기만 한 필드는 Optional[Any]가 되는데, JSON null 자체는 타입 정보를 담지 않기 때문입니다. Any보다 구체적인 타입을 얻으려면 값이 채워진 대표적인 샘플을 붙여넣으세요.
각 JSON 값은 어떤 Python 타입으로 매핑되나요?
문자열은 str, 불리언은 bool, 정수는 int, 소수점이나 지수가 있는 숫자는 float으로 매핑됩니다. Python 정수는 임의 정밀도이므로 아무리 큰 ID라도 int로 유지됩니다 — 64비트 오버플로가 없습니다. 비어 있거나 타입이 혼합된 배열은 List[Any]가 되고, 객체는 중첩 클래스가 됩니다.
중첩 객체와 객체 배열도 처리하나요?
네. 각 중첩 객체는 자체적인 명명된 클래스가 되며, 동일한 형태는 중복 제거되어 모든 필드가 재사용하는 하나의 클래스가 됩니다. 객체 배열은 키 단위로 병합되어 하나의 요소 클래스를 얻으며, 일부 항목에 없는 키는 Optional로 표시됩니다. 자식 클래스는 항상 그것을 사용하는 클래스보다 먼저 출력됩니다.
Python 키워드와 식별자가 아닌 키는 어떻게 처리되나요?
Python 키워드(class, from, import)인 JSON 키에는 뒤에 밑줄이 붙습니다(class_). 하이픈, 공백, 앞자리 숫자가 있는 키는 dataclass와 Pydantic 모드에서 유효한 식별자로 정제됩니다. TypedDict 모드에서는 식별자가 아닌 키를 포함한 dict가 함수형 TypedDict('Name', {...}) 구문으로 출력되므로 "first-name" 같은 정확한 키가 보존됩니다.
생성된 dataclass로 JSON을 파싱하려면 어떻게 하나요?
평면 객체라면 json.loads 후 Root(**data)가 바로 작동합니다. 중첩 구조에서는 dataclass가 자동으로 재귀하지 않으므로 — 자식 객체를 직접 만들거나, dacite나 pydantic.dataclasses 같은 라이브러리를 쓰거나, 이 도구를 Pydantic v2 모드로 전환하세요. 그 모드에서는 Root.model_validate(json.loads(text))가 한 번의 호출로 전체 트리를 파싱합니다.
제 JSON 데이터는 비공개이고 안전한가요?
네. 변환은 JavaScript를 사용해 100% 브라우저에서 처리됩니다. 토큰, ID, 고객 데이터를 포함한 JSON이 페이지를 벗어나지 않으며 서버로 전송되지 않습니다.
이 도구는 무료인가요? 계정이 필요한가요?
가입도, 제한도, 작업 공간을 어지럽히는 광고도 없이 완전히 무료입니다. 페이지가 로드된 후에는 오프라인에서도 작동합니다.

Base64 디코더 · 인코더 (Base64 Decoder & Encoder)

인코딩 & 포매팅

Base64를 온라인에서 무료로 인코딩하고 디코딩합니다. UTF-8과 이모지를 완벽 지원하는 실시간 변환으로, 100% 브라우저에서 처리되어 회원 가입이 필요 없습니다.

Base64 이미지 변환기 (온라인)

인코딩 & 포매팅

Base64 문자열이나 데이터 URI를 온라인 브라우저에서 이미지로 디코딩합니다. 미리보고, 치수와 MIME을 읽은 뒤 PNG, JPG, GIF, SVG로 다운로드하세요. 업로드 없음.

CSV to JSON 변환기 (CSV to JSON Converter)

인코딩 & 포매팅

브라우저에서 CSV를 JSON으로 변환합니다. RFC 4180, 타입 추론, 헤더 행, 큰 정수 안전 처리. 100% 비공개, 업로드 없음.

.env을 JSON으로 변환하는 도구

인코딩 & 포매팅

.env 파일을 붙여넣으면 즉시 JSON으로 변환됩니다. 데이터베이스 비밀번호, API 키, 토큰이 브라우저를 절대 벗어나지 않는 100% 비공개 무료 온라인 dotenv 파서입니다.

무료 HTML 엔티티 디코더 — HTML 언이스케이프

인코딩 & 포매팅

온라인에서 HTML 엔티티를 디코딩하고 HTML을 언이스케이프하세요. 무료, 가입 불필요, 100% 브라우저에서 처리. 이름·10진수·16진수 참조를 문자로 되돌리며 업로드 없음.

무료 HTML 엔티티 인코더 — HTML 이스케이프

인코딩 & 포매팅

온라인에서 HTML 엔티티를 인코딩하고 특수문자(< > & " ')를 이스케이프하세요. 무료, 100% 브라우저에서 처리. 이름·10진수·16진수 출력, 업로드 없음.