JSON을 Go 구조체로 변환
json-to-go 포트로 JSON에서 Go struct 정의를 생성하고 gofmt로 포맷합니다. 키는 json:"..." 태그가 붙은 exported CamelCase 필드가 되고, 중첩 객체는 인라인 익명 struct, null은 any가 됩니다.
서드파티 REST API 응답을 json.Unmarshal할 struct를 작성할 때.
이럴 때 사용하세요
- 서드파티 REST API 응답을 json.Unmarshal할 struct를 작성할 때.
- 예시 페이로드로 Go HTTP 핸들러의 요청·응답 타입 뼈대를 만들 때.
사용 방법
- 왼쪽 편집기에 JSON 객체나 배열을 붙여 넣습니다.
- 생성된 struct를 확인합니다. 루트 타입 이름은 항상 AutoGenerated입니다.
- 패키지에 복사하고 타입 이름을 바꿉니다. 인라인 struct를 재사용한다면 이름 있는 타입으로 분리하세요.
JSON
{
"id": 42,
"user_name": "ada",
"score": 9.5,
"active": true,
"deleted_at": null,
"tags": ["go", "json"],
"address": { "city": "Tokyo", "zip": "100-0001" }
}Go struct
type AutoGenerated struct {
ID int `json:"id"`
UserName string `json:"user_name"`
Score float64 `json:"score"`
Active bool `json:"active"`
DeletedAt any `json:"deleted_at"`
Tags []string `json:"tags"`
Address struct {
City string `json:"city"`
Zip string `json:"zip"`
} `json:"address"`
}세부 정보 및 제한 사항
생성은 브라우저에서 실행됩니다. 타입 이름, 인라인/이름 있는 struct, 태그에 대한 설정은 없습니다.
두문자어는 대문자로 바뀌고(id → ID) snake_case는 CamelCase가 되며, 원래 키는 json 태그에 남습니다.
정수는 int(큰 값은 int64), 소수는 float64가 됩니다. null, 빈 배열, 타입이 섞인 배열은 any 또는 []any가 됩니다.
배열 안 객체 구조가 다르면 일부에 없는 키에 ,omitempty가 붙습니다.
FAQ
루트가 배열인 JSON도 변환할 수 있나요?
네. 배열 안 모든 객체의 필드를 병합한 type AutoGenerated []struct{...}가 생성됩니다.
null 필드가 왜 any 타입인가요?
null 값에는 타입 정보가 없습니다. nil을 계속 허용하려면 any를 *string이나 *time.Time 같은 포인터로 바꾸세요.
이름 있는 중첩 struct를 생성하나요?
아니요. 중첩 객체는 인라인 익명 struct입니다. 참조해야 한다면 직접 이름 있는 타입으로 옮기세요.