>  기사  >  백엔드 개발  >  Go에서 JSON을 임베디드 구조체로 역마샬링할 때 'Num' 필드가 무시되는 이유는 무엇입니까?

Go에서 JSON을 임베디드 구조체로 역마샬링할 때 'Num' 필드가 무시되는 이유는 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-11-04 15:03:42192검색

Why is my `Num` field ignored when unmarshalling JSON to an embedded struct in Go?

Go에서 JSON을 임베디드 구조로 역정렬화

JSON 데이터를 임베디드 구조로 역직렬화하면 Golang에서 문제가 발생할 수 있습니다. struct:

<code class="go">type Outer struct {
    Inner
    Num int
}

type Inner struct {
    Data string
}</code>

json.Unmarshal(data, &Outer{})를 사용할 때 Num 필드를 무시하고 Inner 필드만 역마샬링됩니다. 이런 일이 발생하는 이유를 이해하려면 Inner가 Outer에 포함되어 있다는 점에 유의하는 것이 중요합니다.

JSON 역마샬링 중에 라이브러리는 Outer에서 역마샬러를 ​​호출하고, 차례로 Inner에서 역마샬러를 ​​호출합니다. 결과적으로 Inner.UnmarshalJSON 함수는 전체 JSON 문자열을 수신하여 Inner에 대해서만 처리합니다.

이 문제를 해결하려면 Inner를 Outer의 명시적 필드로 만드세요. 이렇게 하면 JSON 역마샬링 중에 Inner 필드가 적절하게 역마샬링되고 Num 필드가 JSON 데이터를 기반으로 설정됩니다.

<code class="go">Outer struct {
    I Inner // Make Inner an explicit field
    Num int `json:"Num"`
}</code>

이 수정을 통해 JSON 데이터를 다음을 포함하여 Outer 구조체로 올바르게 역마샬링할 수 있습니다. 내부 필드와 Num 필드 모두

위 내용은 Go에서 JSON을 임베디드 구조체로 역마샬링할 때 'Num' 필드가 무시되는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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