Go 구조체→JSON 샘플 생성기
json 태그가 포함된 Go struct 정의를 붙여넣으면 그에 대응하는 JSON 샘플 데이터를 자동으로 생성합니다. 중첩 struct・슬라이스・omitempty・json:"-"도 지원하여 API 목업이나 Postman 예시 작성에 유용합니다.
Go 구조체에서 JSON 샘플을 만들기
API 목을 세우거나 포스트맨에 응답 예시를 등록할 때면, 구조체 정의가 실제로 어떤 JSON을 내놓는지를 손으로 옮겨 적게 됩니다. 이 도구는 붙여 넣은 Go 구조체 정의만으로 그 모양을 샘플 JSON으로 만들어 내며, 중첩된 구조체·슬라이스·`omitempty`·`json:"-"`까지 함께 다룹니다.
**여기서 중요한 것은, Go의 필드명이 반드시 JSON의 키가 되지는 않는다는 점입니다.** json 태그가 있으면 그쪽이 앞서고, `json:"-"`가 붙은 필드는 아예 나오지 않습니다. `omitempty`는 값이 제로값일 때 필드를 떨어뜨리므로 **같은 구조체를 두 번 인코딩해도 키의 면면이 달라질 수 있습니다.** 그러니 정의를 눈으로만 따라가면 JSON의 실제 모양을 잘못 짚기 쉬우며, 그것을 기계적으로 펼쳐 주는 것이 이 도구의 몫입니다. 나오는 값은 타입별 대표값이므로 쓰기 전에 뜻이 있는 데이터로 바꿔 주십시오.
사용하는 방법
- 구조체 정의를 붙여 넣습니다 관련된 구조체 여럿을 함께 넣어도 무방합니다.
- 쓸 구조체의 이름을 지정합니다 **여럿일 때 지정합니다. 비워 두면 첫 번째 구조체가 쓰입니다.**
- 생성된 JSON을 확인합니다 중첩된 구조체와 슬라이스까지 모두 펼쳐진 상태로 나옵니다.
- 값을 바꿔 씁니다 대표값이 들어 있으니 용도에 맞는 데이터로 바꿔 주십시오.
더 잘 활용하기 위한 팁
- 여러 struct를 함께 붙여넣으면 중첩된 필드의 타입을 자동으로 해석해 재귀적으로 샘플 객체를 생성합니다(정의를 찾을 수 없으면 빈 객체 {}로 대체하고 경고를 표시합니다).
- 대상 struct 이름을 지정하면 입력에 여러 struct가 있어도 루트로 사용할 struct를 선택할 수 있습니다(비워두면 처음 등장한 struct가 사용됩니다).
- json:"-"가 지정된 필드는 JSON 출력에서 제외됩니다. omitempty가 붙은 필드도 키 자체는 평소대로 출력되므로 필요 없다면 직접 삭제해 주세요.
- 생성되는 값은 어디까지나 타입에 기반한 자리표시자입니다(문자열은 "example", 숫자는 1 등). 실제 API 응답 예시로 사용하려면 실제 데이터로 바꿔 주세요.
- 이 도구는 자매 도구인 JSON→Go 구조체 변환의 정반대 방향입니다. Go 핸들러에서 정의한 struct로부터 프런트엔드나 QA 팀을 위한 샘플 페이로드를 빠르게 만들 수 있습니다.
이럴 때 쓸 수 있습니다
API 목을 마련할 때
**서버를 쓰기 전에 응답 예시를 굳혀 두면 프런트엔드가 기다릴 일이 없습니다.**
문서에 예시를 실을 때
포스트맨의 예시나 OpenAPI의 샘플에 붙일 재료가 됩니다.
태그의 효과를 확인할 때
`omitempty`나 `json:"-"`가 실제로 무엇을 내놓는지 구체적인 모양으로 볼 수 있습니다.
프런트엔드와 모양을 맞출 때
구체적인 JSON을 보여 주는 편이 타입 정의를 건네는 것보다 오해가 적습니다.
Go 인코딩 용어
- json 태그
- 필드에 붙이는 `json:"user_id"` 꼴의 주석으로, **JSON 쪽 키의 이름을 정합니다.** 없으면 필드명이 그대로 쓰입니다.
- omitempty
- **값이 제로값일 때 키째로 출력에서 빼는** 설정입니다. 0이나 빈 문자열도 함께 떨어진다는 점에 유의해야 합니다.
- json:"-"
- 그 필드를 JSON에 내보내지 않는 설정입니다. 내부용 필드를 감추는 데 씁니다.
- 제로값
- 타입마다 정해진 초기값입니다. 수는 0, 문자열은 빈 값, 포인터와 슬라이스는 nil입니다.
- 슬라이스
- 길이가 변하는 나열로, JSON에서는 배열이 됩니다. **nil인 슬라이스는 `null`로 적히며 이 점이 빈 배열과 다릅니다.**
- 임베디드 필드
- 타입 이름만 적어 다른 구조체를 들이는 표기입니다. JSON에서는 그 필드들이 부모의 키와 같은 층에 놓입니다.
자주 묻는 질문
여담 ― JSON→Go 구조체 변환의 정반대라는 발상
Go로 웹 API를 구현할 때 응답 구조는 struct와 json 태그의 조합으로 정의하는 것이 일반적입니다. 하지만 프런트엔드 개발자나 QA 엔지니어가 API의 동작을 확인하고 싶을 때, Go 코드를 읽고 필드 타입을 하나씩 머릿속에서 JSON으로 변환하는 것은 번거롭고 오해도 생기기 쉬운 작업입니다.
이 도구는 자매 도구인「JSON→Go 구조체 변환」의 정반대 방향의 변환을 수행합니다. Go의 struct 정의를 붙여넣기만 하면 json 태그에 따른 키 이름과 타입에 맞는 자리표시 값을 가진 샘플 JSON을 생성하여, Postman의 예시 작성이나 프런트엔드 목업 데이터로 바로 사용할 수 있는 형태로 만들어 줍니다.
다만 이 도구는 실제 Go 컴파일러가 아니라 정규 표현식과 줄 단위 분석에 기반한 간이 파서입니다. 단순한 필드 정의나 입력 내에 함께 붙여넣은 중첩 struct의 해석에는 대응하지만, 익명 struct의 중첩이나 여러 줄에 걸친 타입 선언 등 복잡한 표기는 올바르게 분석되지 않을 수 있습니다. 어디까지나 초안으로 활용하고 최종 사양은 Go 소스 코드와 대조하여 확인해 주세요.