go 语言中 json.Unmarshal([]byte(jsonbuff), &j) 字节切片得使用场景
在Go语言中,json.Unmarshal
函数用于将JSON编码的数据转换为Go语言中的数据类型。这个函数需要一个字节切片和一个接收数据的指针。
场景一:当你有一个JSON字符串,并且你想将其转换为Go的结构体时,你可以使用[]byte(jsonbuff)
将JSON字符串转换为字节切片。
package main
import (
"encoding/json"
"fmt"
)
type Person struct {
Name string `json:"name"`
Age int `json:"age"`
}
func main() {
jsonbuff := `{"name":"John", "age":30}`
var j Person
err := json.Unmarshal([]byte(jsonbuff), &j)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(j)
}
场景二:当你从外部源(例如文件,网络等)读取数据时,通常会得到一个字节切片。在这种情况下,你不需要将JSON字符串转换为字节切片。
package main
import (
"encoding/json"
"fmt"
"io/ioutil"
)
type Person struct {
Name string `json:"name"`
Age int `json:"age"`
}
func main() {
jsonbuff, err := ioutil.ReadFile("data.json")
if err != nil {
fmt.Println(err)
return
}
var j Person
err = json.Unmarshal(jsonbuff, &j)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(j)
}
在这个例子中,ioutil.ReadFile
函数用于从文件中读取数据,并返回一个字节切片。这个字节切片直接传递给 json.Unmarshal
函数,而不需要转换为字符串。
评论已关闭