解碼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中文網其他相關文章!