구조체를 JSON으로 마샬링하려고 할 때 개발자는 결과는 빈 객체로 반환됩니다. 이 동작은 개인 식별자와 공용 식별자를 구별하기 위해 Go의 대소문자 사용에서 비롯됩니다.
제공된 예에서 Machine 구조체에는 초기 문자가 소문자인 필드가 있습니다.
type Machine struct { m_ip string m_type string m_serial string }
기본적으로 Go 소문자 초기 문자가 포함된 식별자를 비공개로 간주합니다. 이는 Machine의 필드가 코드와 동일한 패키지의 일부가 아니기 때문에 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"` }
예를 들어 MachIp 필드에 json:"m_ip"를 추가하면 결과 JSON에 원하는 소문자 식별자가 포함됩니다. 이는 JSON 태그가 기본 사례 동작을 재정의하기 때문에 달성됩니다.
위 내용은 Go의 `json.Marshal`에 소문자 이름이 있는 구조체 필드가 포함되지 않는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!