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

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

Barbara Streisand
發布: 2024-11-24 03:52:09
原創
708 人瀏覽過

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

解組具有混合資料類型的JSON 陣列

解組包含不同資料型別值的JSON 陣列的任務通常會帶來挑戰。例如,考慮以下 JSON 陣列:

{["NewYork",123]}
登入後複製

問題:

首先,需要注意的是,提供的 JSON 在語法上不正確。 JSON 物件需要每個值的鍵,因此正確的表示形式是 {"key":["NewYork",123]} 或簡單地 ["NewYork",123]。

此外,在處理 JSON 時由於陣列由多種資料類型組成,當 Go 陣列需要指定類型時就會出現問題。這可能會讓您想知道如何處理這種情況。

解:

解決這個問題的關鍵是使用型別介面{}。它允許您處理各種類型的值,而無需明確類型轉換。以下是示範其工作原理的程式碼範例:

import (
    "encoding/json"
    "fmt"
)

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 作為將字串對應到 interface{} 切片的自訂類型。透過利用interface{}類型,我們可以輕鬆處理JSON數組中的混合資料類型。

程式的輸出將是:

<nil>
map[string][]interface{}{"NYC": \["NewYork" 123]}
登入後複製

結論:

透過利用interface{}類型,這種方法使您能夠有效地用各種資料解組JSON數組類型。

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

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