타입 생성

JSON to Pythondataclass와 Pydantic 모델

항상 존재하는 null 필드와 일부 레코드에서 빠진 키는 서로 다른 기본값을 만듭니다.

JSON to Python

JSON 입력

이 브라우저에서 파싱하고 생성합니다. 입력을 업로드하거나 저장하지 않습니다.

생성된 소스

생성 옵션

Python 3.9 이상. dataclass metadata는 디코딩·검증하지 않습니다. Pydantic 2.12.5의 load_models(source)로 선택한 숫자 정책을 적용하세요.

배열 샘플은 요소 모델 Root을 정의합니다. Pydantic load_models는 객체와 배열을 모두 받습니다.

클래스 2개 · null 허용 필드 2개

JSON to Python은 API 응답을 바탕으로 검토할 수 있는 모델 초안을 만듭니다. 모든 값이 채워진 응답 하나로는 누락 가능한 필드를 알아낼 수 없습니다. 키 구성이 다른 레코드도 함께 넣어 보세요.

JSON dataclass 출력은 표준 라이브러리만 사용하는 자료형이 필요할 때 적합합니다. 입력 검증과 중첩 객체 생성이 필요하다면 Pydantic 모델을 선택하세요. Python 타입 힌트는 실제 데이터 계약을 대신하지 않습니다.

JSON to Python으로 확인할 차이

없는 키와 비어 있는 값

JSON to Python은 모든 샘플에 있는 nullable 필드를 필수로 유지합니다. 일부 샘플에 키가 없다면 None 기본값을 추가합니다. 값으로 null을 허용하는 것과 생성자에서 인수를 생략하는 것은 다른 조건입니다.

두 객체에서 null을 나타내는 빈 원과 빠진 칸이 서로 다른 필드 기본값으로 연결되는 그림.

키의 원래 이름을 함께 보관

예약어와 문장부호가 들어간 키는 Python 속성으로 그대로 쓸 수 없습니다. 안전한 이름을 만들고 원래 표기는 dataclass metadata 또는 Pydantic alias에 남깁니다. 이름 충돌에는 일정한 접미사를 붙입니다.

불규칙한 원래 키가 metadata 경로와 alias 경로를 거쳐 안전한 속성 칸에 연결되는 그림.

샘플에서 읽기 규칙까지

01

다른 모양의 레코드도 포함하기

객체 하나 또는 객체만 담은 비어 있지 않은 배열을 넣습니다. 중첩 배열의 모든 객체를 함께 분석해 요소 모델을 만듭니다. 첫 요소에 없는 필드도 다른 요소에 있으면 반영됩니다.

02

기본값과 숫자 정책 검토하기

기본 설정에서는 실제 누락된 키만 생략할 수 있습니다. 전체 선택 항목은 모든 필드에 기본값을 추가합니다. 날짜는 기본적으로 str입니다. 소수나 지수 표기가 섞인 숫자 그룹에 정밀도가 필요하면 Decimal을 고르세요.

03

최신 결과를 내보내기

편집 후 350ms가 지나면 생성됩니다. 자동을 끄면 생성 버튼이나 Ctrl/Cmd+Enter를 사용합니다. 변경 즉시 이전 결과의 복사와 저장이 막힙니다. 지우기나 예제 불러오기 후 입력·설정·결과를 한 번 되돌릴 수 있습니다.

타입 추론과 출력 동작

표준 모델과 검증 모델

dataclass는 표준 라이브러리만 가져오며 기본값 없는 필드를 먼저 배치합니다. Pydantic 출력의 대상은 2.12.5로 고정됩니다. 자식 클래스를 부모보다 먼저 선언하므로 Python 3.9 이상에서 파일 전체를 가져올 수 있습니다.

정밀도를 명시적으로 선택

정수로만 구성된 그룹은 임의 정밀도 int입니다. 소수나 지수 표기가 하나라도 섞이면 기본적으로 float를 사용하며, 그 그룹의 큰 정수도 반올림될 수 있습니다. Decimal 로더는 Any 내부까지 소수 토큰을 float 중간값 없이 읽습니다.

시간대가 분명한 날짜만 추론

ISO 모드는 유효한 달력 날짜와 시간대가 포함된 완전한 타임스탬프를 인식합니다. 소수 초는 최대 6자리이며 같은 위치의 null 아닌 문자열이 모두 같은 종류여야 합니다. 잘못된 날짜와 시간대 없는 시각은 str로 남습니다. 날짜 파싱은 Pydantic이 수행합니다.

충돌하지 않는 Python 이름

속성은 ASCII snake_case로 바뀝니다. 예약어, 선행 밑줄, model_* 이름과 BaseModel 메서드 이름을 피합니다. 빈 키·유니코드·제어 문자는 alias로 보존합니다. Decimal 같은 클래스 이름과 겹치지 않도록 import에도 내부 별칭을 사용합니다.

생성된 파일의 실제 범위

dataclass는 데이터를 담는 클래스
타입 힌트와 json_key metadata는 검증하거나 키를 바꾸지 않습니다. 중첩 객체나 날짜도 자동으로 만들지 않습니다. 생성자에 중첩 dict를 전달하면 그대로 dict로 남습니다. asdict는 metadata 별칭이 아닌 Python 속성 이름으로 출력합니다.
Pydantic은 생성된 로더 사용
pydantic==2.12.5를 설치하고 load_models(source)를 호출하세요. 선택한 숫자 정책으로 json.loads한 뒤 model_validate를 실행해 모델 또는 목록을 반환합니다. model_validate_json을 직접 호출하면 같은 Decimal 정밀도를 보장하지 않습니다. Decimal 직렬화 결과는 보통 JSON 문자열입니다.
누락과 검증을 구분
Pydantic은 원래 JSON 별칭으로만 입력받고 extra="forbid"로 알 수 없는 필드를 거부합니다. Optional[T]는 null을 허용할 뿐, 기본값이 있어야 생략할 수 있습니다. 누락과 명시적인 null은 값만 보면 같으므로 model_fields_set도 확인하세요. 일반적인 타입 강제 변환은 적용되며 업무 검증 규칙은 추론하지 않습니다.
샘플이 불충분하면 넓은 타입
종류가 충돌하거나 null만 있는 필드는 Any, 빈 배열은 List[Any], 빈 중첩 객체는 Dict[str, Any]입니다. enum·UUID·EmailStr·TypedDict·JSON Schema·OpenAPI·ORM은 생성하지 않습니다. 루트 단순값, 빈 배열, 객체 아닌 요소가 섞인 루트 배열은 거부합니다.
이름과 숫자 때문에 실패할 수 있음
별칭을 끄면 이름 변경이 필요한 키를 거부합니다. 짝이 없는 Unicode surrogate 키도 지원하지 않습니다. float의 오버플로와 0이 아닌 값이 0이 되는 언더플로를 거부하지만, 일반적인 이진 반올림은 발생합니다. 정확한 소수가 필요하면 Decimal을 선택하세요.
엄격한 문법과 처리 한도
주석·후행 쉼표·중복 키·자동 수정·파일 가져오기·URL 요청·Python 실행은 지원하지 않습니다. 입력 500,000자, 노드 50,000개, 깊이 40, 합쳐진 객체당 필드 100개, 클래스 200개, 키·숫자 토큰당 1,000자, 지수 절댓값 10,000, 출력 1,000,000자가 한도입니다.

JSON to Python 질문과 답변

외부 라이브러리 없이 JSON을 dataclass로 읽을 수 있나요?

직접 변환 코드를 작성하면 가능합니다. JSON to Python의 dataclass 출력에는 디코더가 포함되지 않습니다. json.loads로 읽은 사전에서 키를 매핑하고 필요한 자식 클래스를 명시적으로 만들어야 합니다.

중첩 데이터가 클래스 대신 딕셔너리로 남는 이유는 무엇인가요?

dataclass 생성자는 전달된 값을 속성에 넣을 뿐 타입 힌트를 따라 재귀적으로 변환하지 않습니다. 직접 자식 인스턴스를 구성하거나 Pydantic 모드의 load_models를 사용하세요. 타입 선언과 런타임 변환은 별개입니다.

JSON 키와 Python 속성 이름이 다르면 어떻게 연결하나요?

별칭을 켜면 Pydantic은 Field(alias=...)로 원래 키를 읽습니다. dataclass에는 json_key metadata가 남으므로 직접 작성하는 어댑터에서 참고할 수 있습니다. 충돌하는 키에는 접미사를 붙여 서로 다른 속성으로 만듭니다.

JSON에 필드가 추가되면 모델도 자동으로 바뀌나요?

아닙니다. 모델은 생성할 때 제공한 샘플에 대한 초안입니다. 응답 구조가 바뀌면 대표 샘플을 다시 넣고 생성해야 합니다. 기존 Pydantic 출력은 extra="forbid" 설정으로 알 수 없는 필드를 거부하므로 변경을 조용히 넘기지 않습니다.

dataclass 객체를 JSON 문자열로 되돌리려면 어떻게 하나요?

dataclass 인스턴스는 dataclasses.asdict로 사전으로 바꾼 뒤 json.dumps할 수 있습니다. 단, 결과 키는 Python 속성 이름입니다. 원래 JSON 별칭과 date·Decimal 같은 값의 직렬화는 별도로 처리해야 합니다.

개선할 추론 사례가 있나요?

실제 레코드로 모델 확인하기

JSON to Python에 누락 키와 null, 대표적인 숫자를 함께 넣어 보세요. 내보낸 소스가 앱의 읽기 규칙에 맞는지 확인한 뒤 사용하세요.