Nouplo

JSON으로 타입 만들기

샘플을 넣고 타입을 받는다.

예제는 입력과 설정을 일시적으로 바꿉니다. 이전 작업을 복원할 수 있습니다.

0자
출력
위에 붙여넣거나 입력하면 여기에 결과가 표시됩니다.

파일은 내 기기 밖으로 나가지 않습니다

이 도구는 브라우저 안에서만 작동합니다. 붙여넣은 내용은 기기에서 처리되고 서버로 전송되지 않으므로 토큰, 키, 공개 전 문서도 안심하고 사용할 수 있습니다.

사용 예시

예: 미세먼지 측정소 API 응답을 TypeScript 타입으로 — 측정값이 null인 측정소 포함

미세먼지 알림 앱을 만들면서, 공공 데이터 형식의 측정소별 실시간 측정 응답을 붙여 넣은 장면입니다. 2026-10-28 14:00 기준 중앙동 측정소(PM10 42, PM2.5 18)와 시청앞 측정소(PM10 null, PM2.5 21) 두 곳, 전체 건수 2, 페이지 1이 들어 있습니다. 설정은 TypeScript, 타입 이름 AirQualityResponse, 들여쓰기 공백 4칸입니다.

  1. items 배열 안의 객체에는 Item이라는 이름이 붙습니다(필드 이름 items에서 끝의 s를 뗀 이름). 두 측정소의 항목이 같아서 타입은 하나입니다.
  2. 시청앞의 pm10Value가 null이라서 pm10Value는 number | null이 됩니다. 값이 빠지는 경우를 코드에서 처리해야 한다는 표시입니다.
  3. khaiGrade는 "2"처럼 따옴표 안에 있으므로 숫자가 아니라 string입니다. 숫자로 쓰려면 Number()로 바꾸거나 타입을 직접 고칩니다.
  4. dataTime "2026-10-28 14:00"도 string입니다. 날짜라는 것은 샘플만으로는 알 수 없습니다.
필드 샘플 값 타입
items 측정소 2곳Item[]
totalCount 2number
stationName "중앙동", "시청앞"string
pm10Value 42, nullnumber | null
pm25Value 18, 21number
khaiGrade "2", "2"string

AirQualityResponse와 Item, 인터페이스 2개(종류 수 2)가 공백 4칸 들여쓰기로 나옵니다. Item은 너무 일반적인 이름이니 Station처럼 바꿔 두면 다른 API의 items와 헷갈리지 않습니다.

사용 방법

  1. 실제 응답을 붙여넣습니다. 지어낸 것보다 진짜 한 건이 낫습니다.
  2. TypeScript·Go·Zod 중에서 고릅니다.
  3. 최상위 타입 이름을 정합니다. 비우면 Root 입니다.
  4. 결과를 복사하고 한 번 읽어 보세요. 샘플 한 건에서 나온 추론은 명세가 아니라 초안입니다.

자주 묻는 질문

배열은 첫 요소만 보나요?
전부 봅니다. [{a:1},{a:1,b:2}] 면 b 는 optional 이 됩니다. 없는 셈 치는 것이 생성된 타입이 2주 뒤에 거슬리게 되는 원인입니다.
null 은 어떻게 다루나요?
좁히지 않고 넓힙니다. 한 번 null 이었던 항목은 null 이 될 수 있는 항목이므로 TypeScript 에서는 유니온, Go 에서는 포인터가 됩니다. 실제 API 의 동작도 대개 그쪽입니다.
같은 모양의 객체는 하나의 타입이 되나요?
됩니다. 항목 이름이 같은 객체는 같은 이름의 타입을 공유하므로 사용자가 50건이어도 User 타입은 하나입니다.
나온 타입을 그대로 믿어도 되나요?
출발점으로만 믿으세요. 샘플 한 건으로는 그 항목이 열거형인지, 숫자가 정수인지, 문자열이 날짜인지 알 수 없습니다. 읽고 조여 주세요. 아끼는 것은 타이핑이지 생각이 아닙니다.
JSON이 배열로 시작하면 어떻게 되나요?
배열 요소 하나를 나타내는 타입이 입력한 이름으로 만들어집니다. 요소는 모두 읽으므로 일부에만 있는 필드는 선택(?)이 됩니다. TypeScript에서는 마지막 줄에 OrderList = Order[] 같은 목록 타입도 추가됩니다.
숫자는 왜 정수가 아니라 number(Go에서는 float64)로 나오나요?
샘플만으로는 그 숫자가 항상 정수인지 알 수 없기 때문입니다. 오늘의 24가 내일은 24.5일 수도 있습니다. TypeScript와 Zod는 number, Go는 float64로 씁니다. ID나 개수가 항상 정수라면 Go에서는 int나 int64로, Zod에서는 .int()를 붙여 고치세요.
입력한 내용이 어디로 전송되나요?
아니요. 브라우저 안에서 동작하므로 붙여넣은 내용은 내 컴퓨터를 떠나지 않습니다.

관련 도구