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 중국어 웹사이트의 기타 관련 기사를 참조하세요!