컨텍스트:
Go에서 JSON 마샬링을 사용하면 구조체를 JSON 개체로 변환할 수 있습니다. 기본적으로 내보낸 모든 구조체 필드는 JSON 출력에 포함됩니다. 그러나 필드 태그로 :",omitempty"를 지정하면 빈 필드를 생략할 수 있습니다.
문제:
중첩된 구조체가 비어 있는 경우(예: 0 모든 필드에 대한 값) :",omitempty"가 있더라도 JSON 출력에 계속 나타날 수 있습니다. 태그.
해결책:
빈 중첩 구조체를 생략하려면 구조체에 대한 포인터를 사용해야 합니다. 이렇게 하면 중첩된 구조체의 빈 값이 nil 포인터로 간주됩니다.
설명:
Go 문서에서:
따라서 중첩된 구조체에 대한 포인터를 사용하여 해당 값이 고려되도록 합니다. 빈 값이므로 :",omitempty" 태그가 있는 경우 JSON 출력에서 생략됩니다. 사용되었습니다.
예:
type ColorGroup struct { ID int `json:",omitempty"` Name string Colors []string } type Total struct { A *ColorGroup `json:",omitempty"` B string `json:",omitempty"` } // Empty nested struct (zero values) group := Total{ B: "abc", } // Marshal group without nested struct (only "B" field included) b, err := json.Marshal(group) if err != nil { fmt.Println("error:", err) } os.Stderr.Write(b)
위 내용은 Go의 JSON 마샬링에서 빈 중첩 구조체를 생략하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!