개발자 / JSON
JSON to Go 구조체
JSON 샘플을 붙여넣으면 내보낸 필드 이름, Go 린터가 요구하는 이니셜리즘, json 태그가 포함된 Go 구조체 정의를 코드에 바로 붙여넣을 수 있는 형태로 생성합니다.
JSON to Go 구조체: 변환기는 브라우저에서 JSON을 읽고 각 객체에 대한 구조체를 작성합니다. 키는 golint가 권장하는 방식에 따라 ID, URL, HTTP 같은 이니셜리즘을 대문자로 유지한 내보낸 CamelCase 이름이 됩니다. 각 필드에는 원래 키가 json 태그로 유지되며, gofmt가 서식을 지정하는 방식으로 정리됩니다. 배열 안의 객체는 병합되므로 일부 객체에 없는 키에는 omitempty가 추가되고, 때때로 null인 키는 포인터가 됩니다. 소수점이 같은 위치에 나타나지 않으면 정수는 int64가 되고, 소수점이 나타나면 float64가 됩니다. 서버에 파일을 전혀 업로드하지 않고 브라우저에서 100% 로컬로 실행됩니다.
- 카테고리
- 개발자 도구
- 실행 횟수
- 브라우저에서
- 비용
- 무료 · 가입 불필요
- 사용 가능 여부
- 사용 가능
브라우저에서 전부 실행됩니다
실행
type User struct {
ID int64 `json:"id"`
UserName string `json:"user_name"`
AvatarURL string `json:"avatar_url"`
Score float64 `json:"score"`
Tags []string `json:"tags"`
Address Address `json:"address"`
}
type Address struct {
City string `json:"city"`
ZipCode string `json:"zip_code"`
}배열의 일부 객체에 없는 키에는 omitempty가 적용되고, 경우에 따라 null인 키는 포인터가 됩니다. API 문서에서 타입을 확인하십시오. 샘플은 포함된 내용만 보여 줍니다.
샘플에서 타입으로
Go는 encoding/json을 사용해 JSON을 구조체로 디코딩합니다. 각 키를 json 태그에 따라 필드에 대응시키며, 태그가 없으면 대소문자를 무시하고 이름으로 대응시킵니다. 대문자로 시작하는 내보낸 필드만 채워지므로 여기의 모든 필드는 대문자로 시작하고 태그에 원래 키를 유지합니다.
샘플은 포함된 내용만 보여 줍니다. 사용자 목록에서 한 명에게 이메일이 없으면 변환기는 email이 선택 사항임을 알 수 있지만, 객체 하나만으로는 알 수 없습니다. 여러 개의 대표적인 객체가 있다면 배열에 넣어 붙여넣고, API 문서와 결과를 대조하십시오. 긴 응답의 구조를 먼저 확인할 때는 JSON 포매터가 도움이 됩니다.
다른 언어와 스키마
같은 샘플을 JSON to TypeScript 변환기로 TypeScript 인터페이스로 만들 수 있습니다. 동일한 API를 읽는 프런트엔드에 사용할 수 있으며, 경계에서 페이로드를 검증할 JSON Schema로 변환할 수도 있습니다.
사용 방법
- API 응답과 같은 JSON 객체 또는 배열을 붙여넣습니다.
- 최상위 타입의 이름을 지정하고 구조체를 분리할지 중첩할지 선택합니다.
- Go 코드를 복사합니다.
개인정보 보호 및 제한사항
JSON은 브라우저에서 변환되며 업로드되지 않습니다.
관련 도구
자주 묻는 질문
user_id가 UserId가 아니라 UserID가 되는 이유는 무엇인가요?
Go 스타일에서는 이니셜리즘을 한 가지 대소문자 형식으로 작성하므로 UserID, APIKey, AvatarURL이 됩니다. 이 변환기는 이 규칙을 널리 알린 린터인 golint의 이니셜리즘 목록을 사용합니다.
필드에 omitempty 또는 포인터가 추가되는 경우는 언제인가요?
샘플이 객체 배열이고 일부 객체에 키가 없으면 필드에 omitempty가 추가됩니다. 따라서 마셜링할 때 값이 비어 있으면 해당 필드가 제외됩니다. 일부 객체에서 키가 null이면 필드는 포인터가 되므로 nil로 null을 나타낼 수 있습니다. 모든 필드에 omitempty를 추가할 수도 있습니다.
int64와 float64를 사용하는 이유는 무엇인가요?
JSON에는 하나의 숫자 타입만 있습니다. 소수점 없이 작성된 값은 int64가 되고, 소수부가 있는 값은 float64가 됩니다. ID가 2^53을 초과할 수 있거나 실제로는 문자열을 숫자처럼 사용한 값이라면 타입을 직접 변경하십시오. 샘플에는 포함된 값만 표시되기 때문입니다.
null 또는 빈 배열은 어떻게 처리되나요?
판단할 정보가 없으면 항상 null인 필드나 빈 배열의 타입은 무엇이든 허용하는 any (interface{})가 됩니다. 실제 타입을 알고 있다면 해당 타입으로 바꾸십시오.
무료 도구 · 브라우저에서회 실행 · 계정 불필요