>백엔드 개발 >Golang >마샬링할 때 내 Go 구조체가 빈 JSON 개체를 생성하는 이유는 무엇입니까?

마샬링할 때 내 Go 구조체가 빈 JSON 개체를 생성하는 이유는 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-12-26 00:28:10987검색

Why Does My Go Struct Produce an Empty JSON Object When Marshalling?

Go의 JSON 마샬링: 구조체 필드의 대소문자 구분

Go의 구조체에서 JSON을 생성하려고 하면 예상치 못한 결과가 발생할 수 있습니다. 구조체의 필드가 소문자로 시작하는 경우. 다음 구조체를 고려하세요.

type Machine struct {
  m_ip string
  m_type string
  m_serial string
}

이 구조체를 JSON으로 마샬링하면 빈 JSON 객체 {}가 생성됩니다. 이는 관례적으로 Go가 패키지 내 가시성을 결정하기 위해 식별자의 대소문자를 사용하기 때문입니다. 필드 이름을 소문자로 시작하면 비공개로 표시되어 json.Marshal 함수에 액세스할 수 없습니다.

이 문제를 해결하려면 각 단어의 첫 글자를 대문자로 지정하여 필드 이름을 공개로 설정할 수 있습니다. :

type Machine struct {
  MachIp string
  MachType string
  MachSerial string
}

또는 JSON 출력에 소문자 필드 이름을 사용하려는 경우 태그를 사용하여 원하는 JSON을 지정할 수 있습니다. 이름:

type Machine struct {
  MachIp     string `json:"m_ip"`
  MachType   string `json:"m_type"`
  MachSerial string `json:"m_serial"`
}

태그를 사용하면 Go에서 구조체 필드의 개인정보 보호를 유지하면서 JSON 필드 이름을 사용자 정의할 수 있습니다.

위 내용은 마샬링할 때 내 Go 구조체가 빈 JSON 개체를 생성하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.