json
结构体对象 -> 字节切片
json.Marshal
字节切片 -> 结构体对象
json.Unmarshal
[]byte 与字符串之间关系
在 Go 语言中,[]byte 和字符串之间有紧密的关系:
-
字符串到
[]byte:- 可以通过
[]byte(str)将字符串转换为字节切片。 - 每个字符会被转换为其对应的字节。
- 可以通过
-
[]byte到字符串:- 可以通过
string(bytes)将字节切片转换为字符串。 - 字节切片中的每个字节会被转换为对应的字符。
- 可以通过
-
区别:
- 字符串是不可变的,而
[]byte是可变的。 - 字符串用于处理文本,而
[]byte常用于处理二进制数据。
- 字符串是不可变的,而
这种转换通常用于需要对字符串进行修改或处理二进制数据的场景。
json.Unmarshal 的参数是[]byte?
是的,json.Unmarshal 的第一个参数是 []byte。这是因为 JSON 数据通常以字节流的形式传输和处理。你需要将 JSON 字符串转换为 []byte,然后传递给 json.Unmarshal。
示例:
import (
"encoding/json"
"fmt"
)
type Person struct {
Name string `json:"name"`
Age int `json:"age"`
}
func main() {
jsonData := `{"name":"Alice","age":30}`
var person Person
err := json.Unmarshal([]byte(jsonData), &person)
if err != nil {
fmt.Println("Error:", err)
} else {
fmt.Println("Person:", person)
}
}
在这个例子中,jsonData 是一个 JSON 格式的字符串,通过 []byte(jsonData) 转换为字节切片,然后传递给 json.Unmarshal。