首頁 >後端開發 >Golang >Go 中如何區分 JSON 空值和缺失欄位?

Go 中如何區分 JSON 空值和缺失欄位?

DDD
DDD原創
2024-11-30 15:34:161055瀏覽

How to Distinguish Between JSON Null and Missing Fields in Go?

Go 中JSON Null 與缺失欄位:比較

在Go 中處理JSON 資料時,區分以下欄位至關重要:顯式設定為null 以及JSON 輸入中簡單缺少的欄位。當 JSON 資料表示 Golang 結構體時,這種差異就變得很有必要。

null 和缺失欄位都會導致對應 Go 結構體欄位中的 nil 值。但是,區分這兩種情況對於確定某個欄位是否故意設定為空或未包含在 JSON 資料中至關重要。

要解決此挑戰,可以使用兩種方法:

將可選結構與泛型一起使用(Go 1.18 )

Go 1.18引入泛型,允許建立泛型可選結構來處理這種情況。可選結構具有一個定義的布林字段,指示 JSON 輸入中是否存在值,以及一個指向實際值的值指標。

type Optional[T any] struct {
    Defined bool
    Value   *T
}
type Payload struct {
    Field1 Optional[string] `json:"field1"`
    Field2 Optional[bool]   `json:"field2"`
    Field3 Optional[int32]  `json:"field3"`
}

使用自訂可選結構(預泛型) )

在泛型之前,可以為需要的每種資料類型建立一個自訂的Optional*結構作為可選處理。

type OptionalString struct {
    Defined bool
    Value   *string
}
type Payload struct {
    SomeField1 string         `json:"somefield1"`
    SomeField2 OptionalString `json:"somefield2"`
}

透過使用這些技術,開發人員可以輕鬆辨別JSON 欄位是否明確設定為null 或輸入資料中不存在,從而提供更大的靈活性和對資料的控制驗證和處理。

以上是Go 中如何區分 JSON 空值和缺失欄位?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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