首頁 > 後端開發 > Golang > 主體

在 Go 中解組時如何處理不同的 JSON 值類型?

Patricia Arquette
發布: 2024-11-18 21:07:03
原創
714 人瀏覽過

How to Handle Varying JSON Value Types When Unmarshaling in Go?

在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)
    }
}
登入後複製

附加說明:

  • 您可以根據需要透過訪問底層的map[string]interface{}結構來進一步處理物件。
  • 此方法提供靈活地處理未來潛在的資料結構更改,無需任何硬編碼或反射。

以上是在 Go 中解組時如何處理不同的 JSON 值類型?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板