在Go 中處理動態JSON 欄位類型
當鍵值的型別不斷變化時,在Go 中將JSON 反序列化為結構化資料可能具有挑戰性。例如,API 可以提供不同格式的數據,例如:
{ "mykey": [ {obj1}, {obj2} ] }
{ "mykey": [ "/obj1/is/at/this/path", "/obj2/is/at/this/other/path" ] }
Go 的方法
要處理此類動態JSON,請考慮使用靈活的資料結構,如下所示:
type Data struct { MyKey []interface{} `json:"mykey"` }
此結構允許將字串和物件儲存在MyKey 切片中。
區分類型
JSON 反序列化後,您可以使用類型開關來區分字串和物件:
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) } }
這種方法開關來區分字串和物件:
這種方法使您能夠確定MyKey 切片中每個元素的類型並進行相應的處理。以上是如何在 Go 中處理動態 JSON 欄位類型?的詳細內容。更多資訊請關注PHP中文網其他相關文章!