go语言 结构体转 []byte 再转回结构体
时间: 2023-08-07 22:03:10 浏览: 91
在Go语言中,你可以使用`encoding/json`包来将结构体转换为`[]byte`类型的字节切片,并将字节切片再转换回结构体。
以下是一个示例代码,演示了如何将结构体转换为`[]byte`类型的字节切片,然后再将字节切片转换回结构体:
```go
package main
import (
"encoding/json"
"fmt"
)
type Person struct {
Name string `json:"name"`
Age int `json:"age"`
}
func main() {
person := Person{
Name: "Alice",
Age: 25,
}
// 将结构体转换为JSON格式的字节切片
data, err := json.Marshal(person)
if err != nil {
fmt.Println("Error:", err)
return
}
fmt.Println(string(data)) // 输出: {"name":"Alice","age":25}
// 将字节切片转换为结构体
var newPerson Person
err = json.Unmarshal(data, &newPerson)
if err != nil {
fmt.Println("Error:", err)
return
}
fmt.Println(newPerson.Name) // 输出: Alice
fmt.Println(newPerson.Age) // 输出: 25
}
```
在上述代码中,我们首先定义了一个`Person`结构体,其中包含`Name`和`Age`两个字段。然后,我们创建了一个`Person`类型的实例`person`,并赋予相应的值。
使用`json.Marshal`函数将结构体`person`转换为JSON格式的字节切片。如果转换成功,`data`将包含转换后的字节切片。我们使用`string()`函数将字节切片转换为字符串并打印出来。
然后,我们使用`json.Unmarshal`函数将字节切片`data`转换回结构体。如果转换成功,`newPerson`将包含解析后的结构体对象。我们再次通过访问结构体变量的字段来验证转换是否成功。
运行以上代码,你会看到输出为:
```
{"name":"Alice","age":25}
Alice
25
```
这表明结构体成功转换为JSON格式的字节切片,并且字节切片成功转换回结构体。
阅读全文