首頁 > 後端開發 > Golang > 如何在 Go 的 JSON 封送處理中省略空巢狀結構?

如何在 Go 的 JSON 封送處理中省略空巢狀結構?

Susan Sarandon
發布: 2024-12-13 22:21:16
原創
273 人瀏覽過

How to Omit Empty Nested Structs in Go's JSON Marshaling?

在JSON 編組中省略空嵌套結構

上下文:

Go 中的JSON 編組可以將結構轉換為JSON 對象。預設情況下,所有匯出的結構欄位都包含在 JSON 輸出中。但是,可以透過指定 :",omitempty" 作為欄位標記來省略空白欄位。

問題:

如果嵌套結構為空(即具有零)其所有字段的值),即使它具有:",omitempty",它仍可能出現在JSON輸出中

解:

要省略空嵌套結構,需要使用指向結構的指標。透過這樣做,嵌套結構體的空值將被視為 nil 指標。

解釋:

來自 Go 文件:

  • 結構體值編碼為 JSON 物件。空值包括 nil 指標。
  • omitempty 標籤適用於空值,包括 nil 指標。

因此,透過使用指向嵌套結構的指針,我們確保它被考慮空值,因此當 :",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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板