如何使用介面變數將JSON 解組為特定結構
問題:
何
問題:何時將JSON 解組為介面變量,encoding/json 套件將其解釋為映射。我們如何指示它使用特定的結構?
解釋:JSON 套件在解組時需要一個具體類型作為目標。傳遞interface{}變數並不能提供足夠的訊息,套件預設為物件使用map[string]interface{},為陣列預設使用[]interface{}。
解決方案:func getFoo() interface{} { return &Foo{"bar"} }
err := json.Unmarshal(jsonBytes, fooInterface)
fmt.Printf("%T %+v", fooInterface, fooInterface)
存取透過介面變數解組資料。
範例:package main import ( "encoding/json" "fmt" ) type Foo struct { Bar string `json:"bar"` } func getFoo() interface{} { return &Foo{"bar"} } func main() { fooInterface := getFoo() myJSON := `{"bar":"This is the new value of bar"}` jsonBytes := []byte(myJSON) err := json.Unmarshal(jsonBytes, fooInterface) if err != nil { fmt.Println(err) } fmt.Printf("%T %+v", fooInterface, fooInterface) // prints: *main.Foo &{Bar:This is the new value of bar} }以下程式碼示範了此技術:
以上是如何使用 Go 中的介面變數將 JSON 解組為特定結構?的詳細內容。更多資訊請關注PHP中文網其他相關文章!