JSON to GraphQL 스키마(SDL) 변환기
JSON 객체를 스칼라 매핑이 적용된 GraphQL 타입 정의(SDL)로 브라우저에서 변환합니다.
사용법
- 입력 상자에 JSON을 붙여넣거나 입력합니다.
- 필요하면 루트 타입 이름을 변경합니다(기본값 AutoGenerated).
- 출력 상자에서 생성된 SDL을 복사합니다.
자세한 설명
펼치기접기
JSON 객체나 배열을 붙여넣으면 스키마 정의 언어(SDL)로 된 GraphQL 타입 정의를 얻을 수 있습니다. 스칼라는 매핑되고 중첩 객체마다 별도의 타입이 만들어집니다. 정수는 Int, 소수는 Float가 되며(GraphQL의 Int는 부호 있는 32비트이므로 밀리초 타임스탬프처럼 그 범위를 넘는 정수도 Float가 됩니다), 키는 GraphQL에서 유효한 이름으로 바뀝니다. 하이픈과 점은 밑줄이 되고, 숫자로 시작하는 키에는 앞에 밑줄이 붙습니다. 표본만으로 타입을 정할 수 없는 자리에는 JSON 스칼라를 사용하고 선언까지 함께 넣어 줍니다. null 값과 빈 배열이 여기에 해당합니다. 한 가지는 직접 손봐야 합니다. 모든 필드는 널 허용으로 출력되는데, 표본 하나에 값이 있다는 사실이 API가 그 값을 보장한다는 뜻은 아니기 때문입니다. 필요한 자리에 느낌표를 붙이세요. 모든 처리는 브라우저에서 이루어지며 JSON은 업로드되지 않습니다.
자주 묻는 질문
숫자는 어떤 타입이 되나요?
정수는 Int, 소수점이 있는 숫자는 Float로 변환됩니다. GraphQL의 Int는 부호 있는 32비트라서 ±2,147,483,647을 넘는 정수(밀리초 타임스탬프, 큰 바이트 수)도 Float가 됩니다. 다른 스칼라가 필요하면 직접 수정하세요.
null, 빈 배열, 빈 객체는 어떻게 처리되나요?
타입을 추론할 수 없으므로 사용자 정의 JSON 스칼라(빈 배열은 [JSON])로 변환됩니다. 사용 시 scalar JSON 선언이 추가됩니다.
필드는 nullable인가요?
예. GraphQL 필드는 기본적으로 nullable이므로 non-null(!) 표시가 추가되지 않습니다. 항상 필요한 값에는 직접 추가하세요.
제 JSON이 어딘가로 전송되나요?
아니요. 변환은 전적으로 브라우저에서 이루어지며 아무것도 업로드되지 않습니다.
API가 항상 값을 주는데 왜 모든 필드가 널 허용인가요?
표본 하나로는 그것을 증명할 수 없기 때문입니다. GraphQL에서 널 허용 여부는 설명이 아니라 계약입니다. 널이 아님으로 표시하는 것은 그 필드가 결코 빠지지 않는다는 약속이고, 나중에 그 약속을 어기면 스키마 파괴적 변경이 됩니다. 느낌표는 필드마다 의도적으로 붙이세요.
하이픈이 들어간 제 키는 어떻게 됐나요?
GraphQL 이름에는 문자·숫자·밑줄만 쓸 수 있고 숫자로 시작할 수도 없어서, 하이픈이나 점은 밑줄이 되고 앞의 숫자에는 밑줄이 붙습니다. 이는 필드 이름을 바꾸는 것이므로, 리졸버에서 원래 키로 명시적으로 되돌려 매핑해야 합니다.
관련 도구
JSON → TypeScript 인터페이스
JSON 샘플에서 TypeScript 인터페이스를 자동 생성 — 키 이름을 따라 재귀적으로 타입 추론.
개발
JSON to Python 데이터클래스 변환기
JSON 객체를 타입 힌트가 포함된 Python @dataclass 정의로 브라우저에서 변환합니다.
개발
JSON to Protobuf 스키마 변환기 (proto3)
JSON 객체를 타입 지정 필드와 중첩 메시지를 갖춘 proto3 .proto 스키마로 브라우저에서 변환합니다.
개발
JSON to Zod 스키마 생성기
JSON 객체를 타입이 추론된 Zod 검증 스키마로 브라우저에서 변환합니다.
개발
JSON to Mongoose 스키마 생성기
JSON 객체를 타입이 매핑된 경로가 포함된 Mongoose 스키마로 브라우저에서 변환합니다.
개발
JSON Schema 생성기
JSON 붙여넣으면 그 형태에 맞는 draft-07 JSON Schema 생성 — 타입 추론·포맷 감지·required 필드 채움.
개발