首頁  >  文章  >  後端開發  >  如何在 Go 中解碼具有混合資料類型的 JSON 數組?

如何在 Go 中解碼具有混合資料類型的 JSON 數組?

Barbara Streisand
Barbara Streisand原創
2024-11-26 10:06:10761瀏覽

How Can I Decode JSON Arrays with Mixed Data Types in Go?

解碼JSON 中混合類型的數組

處理包含不同類型值的JSON 數組時,必須考慮如何解組將它們有效地轉化為Go 程式。 Go 陣列需要明確定義的類型,這在處理不同的值類型時帶來了挑戰。

解決方案:利用介面{}

解決方案在於使用介面{} ,Go 中的一種特殊類型,可以保存任何類型的值。透過使用 interface{} 數組,我們可以靈活地在同一數組中儲存不同類型的值。

範例實作

考慮以下 JSON 範例:

{"key": ["NewYork", 123]}

要使用介面{}解組此JSON,我們可以定義自訂資料結構:

type UntypedJson map[string][]interface{}

此類型表示從字串到介面{}數組的映射,允許儲存任何類型的值。

解組JSON

要解組JSON,我們可以使用json.Unmarshal function:

var ut UntypedJson
json.Unmarshal([]byte(jsonString), &ut)

ut 變數現在將包含為UntypeJson類型的未編組資料。映射鍵對應 JSON 物件鍵,陣列值保存不同類型的值。

範例 Playground

嵌入 Go 遊樂場的完整範例可以在這裡找到:

const j = `{"NYC": ["NewYork",123]}`

type UntypedJson map[string][]interface{}

func main() {
    ut := UntypedJson{}
    fmt.Println(json.Unmarshal([]byte(j), &ut))
    fmt.Printf("%#v", ut)
}

以上是如何在 Go 中解碼具有混合資料類型的 JSON 數組?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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