在Go 中處理動態JSON 字段類型
在Go 中將JSON 解組到結構體時,可能會遇到值類型不一致的情況API 請求中的特定按鍵。當伺服器發送相同密鑰的不同物件結構或字串引用時,就會出現此挑戰。這可能會帶來問題,因為 Go 需要固定的結構來進行解組。
為了解決這個問題,可以採用使用介面類型的型別動態方法。考慮以下JSON 資料:
{ "mykey": [ {obj1}, {obj2} ] }
為了捕捉這個動態性質,我們可以定義一個結構體,如下所示:
type Data struct { MyKey []interface{} `json:"mykey"` }
當遇到帶有字串值的JSON 時,例如:
{ "mykey": [ "/obj1/is/at/this/path", "/obj2/is/at/this/other/path" ] }
MyKey 切片元素將被解碼為字串。對於對象,它們將被解碼為 map[string]interface{} 值。這種區別可以使用類型開關來實現:
for i, v := range data.MyKey { switch x := v.(type) { case string: fmt.Println("Got a string: ", x) case map[string]interface{}: fmt.Printf("Got an object: %#v\n", x) } }
透過將JSON 解組為介面類型並使用類型開關,Go 開發人員可以處理動態欄位類型並適當地解析數據,無論提供的結構如何由伺服器提供。
以上是Go 如何在解組過程中處理動態 JSON 欄位類型?的詳細內容。更多資訊請關注PHP中文網其他相關文章!