目录
go序列化
在Go语言中,可以使用标准库中的encoding/json包将结构体序列化为JSON字符串。具体方法是使用json.Marshal()函数。下面是一个示例:
package main
import (
"encoding/json"
"fmt"
)
type Person struct {
Name string `json:"name"`
Age int `json:"age"`
Address string `json:"address,omitempty"`
}
func main() {
p := Person{"张三", 20, ""}
b, err := json.Marshal(p)
if err != nil {
fmt.Println("序列化失败:", err)
return
}
fmt.Println(string(b))
}
在上述代码中,定义了一个Person结构体,并初始化了一个Person类型的变量p。通过调用json.Marshal()函数将p序列化为JSON字符串,并将结果打印出来。
需要注意的是,在Person结构体中添加了json元素标签,这些标签指定了每个成员在生成的JSON字符串中对应的名称。omitempty则表示当成员为空时,不需要在JSON字符串中生成该成员。
如果要让JSON字符串更加美观,可以使用json.MarshalIndent()函数,它提供了类似于Python中的缩进功能。下面是一个示例:
package main
import (
"encoding/json"
"fmt"
)
type Person struct {
Name string `json:"name"`
Age int `json:"age"`
Address string `json:"address,omitempty"`
}
func main() {
p := Person{"张三", 20, ""}
b, err := json.MarshalIndent(p, "", " ")
if err != nil {
fmt.Println("序列化失败:", err)
return
}
fmt.Println(string(b))
}
go反序列化
在Go语言中,可以使用标准库中的encoding/json包将JSON字符串反序列化为结构体。具体方法是使用json.Unmarshal()函数。以下是一个示例:
package main
import (
"encoding/json"
"fmt"
)
type Person struct {
Name string `json:"name"`
Age int `json:"age"`
Address string `json:"address,omitempty"`
}
func main() {
var p Person
jsonStr := `{"name":"张三","age":20}`
err := json.Unmarshal([]byte(jsonStr), &p)
if err != nil {
fmt.Println("反序列化失败:", err)
return
}
fmt.Println(p)
}
以上就是在Go语言中将JSON字符串反序列化为结构体的方法。需要注意的是,序列化时可以使用json.Marshal()函数。