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

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

Linda Hamilton
Linda Hamilton原創
2024-11-23 04:33:16867瀏覽

How to Decode JSON Arrays with Mixed Data Types in Go?

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

在某些情況下,您可能會遇到包含不同類型元素的JSON 數組。例如:

{["NewYork",123]}

Go 陣列要求您明確指定其類型,這在處理混合類型的陣列時可能會變得具有挑戰性。

使用介面的解決方案{}

要處理混合類型數組,您可以利用 interface{} 類型,它允許任何類型的值。以下是在 Go 中實現此目的的方法:

package main

import (
    "encoding/json"
    "fmt"
)

type UntypedJson map[string][]interface{}

func main() {
    j := `{"NYC": ["NewYork",123]}`
    ut := UntypedJson{}
    err := json.Unmarshal([]byte(j), &ut)
    if err != nil {
        fmt.Println(err)
        return
    }
    fmt.Printf("%#v", ut)
}
  • 首先,我們定義一個自訂類型 UntypedJson,它將字串對應到 interface{} 的陣列。這允許我們在數組中儲存任何類型的值。
  • 我們使用 json.Unmarshal 將 JSON 字串解碼為 UtnyptedJson 類型。由於 interface{} 可以容納任何類型,因此它可以處理陣列中的字串和整數元素。
  • 最後,我們使用 fmt.Printf 來顯示未編組的資料。

注意: 值得注意的是,提供的 JSON 範例在技術上是無效的,因為 JSON 物件必須有鍵。修正的範例是:

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

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

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