解組具有混合資料類型的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中文網其他相關文章!