Skip to main content

json

结构体对象 -> 字节切片

json.Marshal

字节切片 -> 结构体对象

json.Unmarshal

[]byte 与字符串之间关系

在 Go 语言中,[]byte 和字符串之间有紧密的关系:

  1. 字符串到 []byte

    • 可以通过 []byte(str) 将字符串转换为字节切片。
    • 每个字符会被转换为其对应的字节。
  2. []byte 到字符串

    • 可以通过 string(bytes) 将字节切片转换为字符串。
    • 字节切片中的每个字节会被转换为对应的字符。
  3. 区别

    • 字符串是不可变的,而 []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