생성 및 코드 구조 도구

JSON → Go 구조체

JSON 예제를 Go 구조체로 바꾸고 원래 필드와의 연결을 유지하세요.

JSON 입력

생성된 코드

공개 필드와 json 태그가 있는 Go 구조체를 만드세요. 포인터, 중첩 객체, 슬라이스를 처리합니다.

JSON 추론과 Go 코드 생성은 모두 브라우저에서 처리하며 서버나 온라인 생성 서비스로 보내지 않습니다.

도구 소개

Go 1.18 이상에서 사용할 이름 있는 구조체와 슬라이스 타입을 생성합니다. 필드 이름을 공개 가능한 유효한 식별자로 바꾸고 json 태그로 원래 키를 가능한 한 유지합니다. 복잡하거나 특수한 키는 encoding/json 제약을 확인해야 합니다.

사용 방법

  1. JSON을 입력하세요. 여러 객체 예제를 사용하면 누락되는 필드를 파악하는 데 도움이 됩니다.
  2. 루트 구조체 이름을 설정하세요.
  3. '변환'을 누르고 공개 필드, json 태그, nil 허용 포인터, 슬라이스 타입을 확인하세요.
  4. 코드를 복사하거나 Go 소스를 다운로드한 뒤 대상 패키지에 넣고 프로젝트 요구에 맞게 조정하세요.

사용 예제

  • {"first_name":"Tom"}: 공개 필드 FirstName을 만들고 json:"first_name"을 유지합니다.
  • [{"id":1,"name":"Tom"},{"id":2}]: name은 선택적 필드로 *string과 omitempty를 사용할 수 있습니다.
  • {"matrix":[[1,2],[3,4]]}: [][]int64로 추론합니다.

타입 매핑 규칙

문자열은 string, 안전한 정수는 int64, 소수와 혼합 숫자는 float64, 불리언은 bool, 배열은 []T입니다. 알려진 타입이 null 또는 누락을 허용하면 적절한 포인터를 사용하고 누락 가능한 필드에는 omitempty를 붙입니다. 알 수 없는 타입, null만 있는 값, 통합할 수 없는 혼합 요소는 any로 처리합니다. 대상은 Go 1.18 이상입니다. 필드는 공개되며 구조체 이름은 안정적으로 정하고 충돌을 피합니다. 태그는 유효한 Go 문자열로 이스케이프합니다. encoding/json은 쉼표, 하이픈, 일부 제어 문자를 포함한 키를 특별히 해석합니다. 그대로 왕복 변환할 수 없는 키는 코드에 설명하므로, 문법이 유효하다고 모든 JSON 키가 자동 매핑되는 것은 아닙니다. 입력과 출력은 각각 1 MiB, 중첩 64단계, 노드 100000개, 병합 필드 5000개, 타입 256개까지입니다. 안전한 정수 범위 밖의 값, 유한하지 않은 수, 언더플로로 0이 되는 수는 오류를 표시하며 다른 소수는 브라우저 부동소수점 정밀도를 따릅니다.

주요 용도

  • 서비스 API 예제에 맞는 Go 데이터 타입 준비하기.
  • null 허용·선택적 필드의 포인터 필요성 확인하기.
  • 중첩 JSON으로 이름 있는 구조체와 슬라이스 만들기.

개인정보 안내

JSON 추론과 Go 코드 생성은 모두 브라우저에서 처리하며 서버나 온라인 생성 서비스로 보내지 않습니다.

결과를 보관하려면 페이지를 떠나기 전에 복사하거나 다운로드하세요.

자주 묻는 질문

필드 이름이 왜 대문자로 시작하나요?

Go의 encoding/json은 보통 공개 필드를 필요로 합니다. 대문자로 시작하면 패키지 외부와 표준 라이브러리에서 접근할 수 있습니다.

json 태그는 어떤 역할을 하나요?

구조체 필드와 JSON 키의 연결을 지정해 필드 이름을 바꿔도 일반적인 원래 키를 유지합니다.

null은 어떻게 처리하나요?

알려진 타입과 null이 함께 나타나면 포인터를 사용할 수 있습니다. null만 있어 정보가 부족하면 any 같은 보수적인 타입을 사용합니다.

왜 any를 사용하나요?

이 페이지는 Go 1.18 이상을 대상으로 하며 any는 interface{}의 별칭입니다. 예제만으로 타입을 확정할 수 없을 때 사용합니다.

모든 JSON 키를 그대로 유효한 태그로 만들 수 있나요?

항상 가능한 것은 아닙니다. Go 태그 문자열은 이스케이프할 수 있지만 encoding/json은 쉼표와 하이픈 등을 별도로 해석합니다. 이런 키는 사용자 지정 매핑이 필요하므로 생성 후 안내를 확인하세요.

개발자 도구 목록으로 돌아가기