首頁 >後端開發 >Golang >在 Go 中解組 JSON 時如何區分 Void 和未指定欄位?

在 Go 中解組 JSON 時如何區分 Void 和未指定欄位?

Patricia Arquette
Patricia Arquette原創
2024-12-09 02:35:10481瀏覽

How Can I Differentiate Between Void and Unspecified Fields When Unmarshaling JSON in Go?

在Go 中進行JSON 解組期間識別Void 和未指定欄位

在JSON 中,區分void 值和未指定欄位可能具有挑戰性將資料解組到Go 結構中。

例如,考慮以下內容JSON:

[
  {"Name": "A", "Description": "Monotremata"},
  {"Name": "B"},
  {"Name": "C", "Description": ""}
]

如果我們定義這樣的Go 結構:

type Category struct {
  Name        string
  Description string
}

並將JSON 解組為類別實例切片,我們會得到以下輸出:

[{Name:A Description:Monotremata} {Name:B Description:} {Name:C Description:}]

請注意,B 的Description欄位是一個空字串,而 C 的 Description 欄位在 JSON 中被完全省略。在這兩種情況下,Description 欄位在 Go 表示中都設定為空字串。

為了區分這些情況,一種方法是使用可選欄位的指標。透過將Description 的類型更改為指針,我們可以區分空字串值和nil 值(表示未指定的字段):

type Category struct {
  Name        string
  Description *string
}

當我們將JSON 解組到這個修改後的結構中時,我們得到輸出如下:

[{Name:A Description:0x1050c150} {Name:B Description:<nil>} {Name:C Description:0x1050c158}]

如您所見,B 的Description 欄位現在為nil,而C 的Description欄位是指向空字串的指標(以十六進位記憶體位址表示)。這使我們能夠識別未指定的欄位並在我們的程式中相應地處理它們。

以上是在 Go 中解組 JSON 時如何區分 Void 和未指定欄位?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn