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

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

Patricia Arquette
Patricia Arquette原創
2024-11-27 07:06:10327瀏覽

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

解組具有混合值類型的JSON 數組

由於要求,解組包含不同類型值的JSON 數組可能會在Go 中帶來挑戰用於Go 陣列中的明確類型定義。

Case研究:

考慮以下無效的JSON 範例:

["NewYork", 123]

嘗試將此陣列解碼為Go 陣列會失敗,因為Go 陣列需要固定類型,即在這種情況下未知。

解決方案:

克服這個問題限制,Go提供了interface{}類型,它允許儲存任何類型的值。透過利用interface{},可以解組包含混合值類型的JSON數組,如下所示:

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)
}

在這個範例中,我們定義一個自訂類型UntypedJson作為字串鍵到切片的映射介面{}.然後將 JSON 陣列解組到 UntypedJson 實例中。 fmt.Printf 語句顯示解組數據,其中包含 JSON 數組中的混合值。

透過利用 interface{} 類型,可以解組包含不同類型值的 JSON 數組,從而提供更多資訊針對複雜資料場景的靈活多功能解決方案。

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

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