> 백엔드 개발 > Golang > Go의 `json.Marshal`에 소문자 이름이 있는 구조체 필드가 ​​포함되지 않는 이유는 무엇입니까?

Go의 `json.Marshal`에 소문자 이름이 있는 구조체 필드가 ​​포함되지 않는 이유는 무엇입니까?

Linda Hamilton
풀어 주다: 2024-12-25 01:21:11
원래의
257명이 탐색했습니다.

Why Doesn't Go's `json.Marshal` Include Struct Fields with Lowercase Names?

Golang이 초기 문자가 소문자인 구조체에서 JSON을 생성하지 못하는 이유는 무엇입니까?

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

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿