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