Avatar ·

json.Unmarshal 对比 json.NewDecoder.Decode:在 Go 中解析 JSON 该选哪个?

大家好!我刚开始学习 Go,遇到了在 `json.Unmarshal` 和 `json.NewDecoder.Decode` 之间选择解析 JSON 的问题。两种方法做的是同一件事——将 JSON 解码为结构体,但文档中说存在一些细微差别。 以下是我写的示例: ```go package main import ( "encoding/json" "fmt" "strings" ) type User struct { Name string `json:"name"` Age int `json:"age"` } func main() { jsonStr := `{"name": "Alice", "age": 30}` // 选项 1 var user1 User err := json.Unmarshal([]byte(jsonStr), &user1) if err != nil { fmt.Println("Unmarshal error:", err) } fmt.Println(user1) // 选项 2 var user2 User decoder := json.NewDecoder(strings.NewReader(jsonStr)) err = decoder.Decode(&user2) if err != nil { fmt.Println("Decoder error:", err) } fmt.Println(user2) } ``` 两种方法效果相同。但我读到 `NewD