在Go 中解組具有不同值類型的JSON
在Go 中,JSON 解組通常涉及將JSON 資料對應到對應的結構。然而,當資料結構變化時,就會出現困難,將鍵的值呈現為物件或字串陣列。
問題:
API 提供不一致的資料結構,導致鍵的潛在值變化:內聯物件或物件的引用(/obj1/is/at/this/path )。
解決方案:
要處理這種變化,請考慮以下技術:
1。解組到介面類型:
將 JSON 資料解組到包含 []interface{} 類型欄位的結構體。這將允許字串(解碼為字串)和物件(解碼為 map[string]interface{})儲存在陣列中。
程式碼範例:
type Data struct { MyKey []interface{} `json:"mykey"` }
2.區分的型別切換:
資料解組後,使用型別切換來區分字串和物件。
程式碼範例:
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) } }
附加說明:
以上是在 Go 中解組時如何處理不同的 JSON 值類型?的詳細內容。更多資訊請關注PHP中文網其他相關文章!