도구상자FREE ONLINE TOOLS
← 가이드 목록

API 응답에서 타입 만들기 — JSON을 코드로 받아 적는 법

새 API를 붙일 때마다 반복되는 그 작업 — 응답 JSON을 한 줄씩 보며 interface를 받아 적기. 필드 30개짜리 응답이면 10분이 사라지고, 오타 하나가 런타임 버그가 됩니다. 기계적으로 끝내는 법과, 자동 변환이 못 잡는 것들을 정리합니다.

왜 손으로 쓰면 안 되나

  • 오타는 컴파일을 통과합니다userNameusername으로 적으면, 에러 없이 조용히 undefined가 흐릅니다. 가장 잡기 어려운 종류의 버그입니다.
  • 누락도 통과합니다 — 안 적은 필드는 "없는 것"이 될 뿐, 경고가 없습니다.
  • 시간이 아깝습니다 — 받아 적기는 기계가 사람보다 정확하고 빠른 대표적인 작업입니다.

자동 변환 1분 컷

  1. API의 실제 응답 JSON을 복사합니다 — 문서 예시보다 실제 응답이 정확합니다.
  2. JSON → 타입 변환기에 붙여 넣고 언어(TypeScript·Python·Go)를 고릅니다.
  3. 생성된 타입 코드를 복사해 프로젝트에 붙입니다 — 중첩 객체는 자동으로 별도 타입으로 분리됩니다.
JSON → 타입 변환TS interface · Python dataclass · Go struct 변환하기 →

변환 후 다듬을 것 세 가지

자동 변환은 샘플에 보이는 것만 압니다. 다음 세 가지는 사람이 마무리해야 합니다.

  • null·빈 배열 필드 — 타입을 확정할 수 없어 any(TS)·Any(Python)·interface{}(Go)로 나옵니다. 실제 타입을 명시하세요.
  • 선택(optional) 필드 — 샘플에 우연히 없던 필드는 타입에도 없습니다. API 문서를 보고 ?를 붙이거나 필드를 추가하세요.
  • 자동 이름 — 중첩 타입은 키 이름으로 자동 명명됩니다(DataItem 등). 도메인에 맞는 이름으로 바꾸면 가독성이 올라갑니다.
팁: 가능하면 필드가 다 채워진 응답(값이 있는 케이스)을 샘플로 쓰세요. null투성이 샘플은 느슨한 타입투성이 결과를 낳습니다.

언어별 출력의 모양

  • TypeScriptinterface. 프런트엔드에서 응답 타입으로 바로 사용.
  • Python@dataclass 클래스. 타입 힌트와 함께 생성됩니다.
  • Go — JSON 태그(`json:"..."`)가 달린 struct. 언마샬링에 바로 사용.
  • 자바가 필요하면 JSON → Java DTO 도구가 따로 있습니다.
자주 묻는 질문
Q. API 응답 타입을 손으로 쓰지 말아야 하는 이유가 있나요?

오타와 누락 때문입니다. 필드가 수십 개인 응답을 눈으로 보며 받아 적으면 철자 하나, 선택 필드 하나를 놓치기 쉽고, 그 오타는 컴파일은 통과하면서 런타임에 undefined로 나타나는 가장 잡기 어려운 버그가 됩니다. 실제 응답 JSON을 변환기에 넣어 기계적으로 생성하면 구조와 철자가 정확히 일치하는 타입을 1분 안에 얻을 수 있습니다.

Q. 변환된 타입을 그대로 써도 되나요?

출발점으로 쓰고 세 가지를 다듬으세요. 첫째, null이나 빈 배열이었던 필드는 any 같은 느슨한 타입으로 나오므로 실제 타입을 명시해야 합니다. 둘째, 샘플에 우연히 없던 선택(optional) 필드는 API 문서를 보고 ?를 붙여 주세요. 셋째, 자동으로 지어진 중첩 타입 이름(예: DataItem)을 의미 있는 이름으로 바꾸면 코드 가독성이 올라갑니다.

Q. TypeScript·Python·Go 출력은 각각 어떤 형태인가요?

TypeScript는 interface, Python은 @dataclass가 붙은 클래스, Go는 JSON 태그가 달린 struct로 생성됩니다. 세 출력 모두 중첩 객체를 별도 타입으로 분리해 연결해 주므로, 사용하는 언어 탭만 바꾸면 같은 JSON에서 세 언어의 모델 코드를 얻을 수 있습니다. 자바가 필요하면 JSON → Java DTO 도구를 쓰면 됩니다.

함께 보면 좋은 가이드