json.Marshal
和 json.Unmarshal
是 Go 语言标准库中用于 JSON 编码和解码的函数。
json.Marshal
用于将 Go 对象转换为 JSON 格式的字节切片。package main import ( "encoding/json" "fmt" ) type Person struct { Name string `json:"name"` Age int `json:"age"` Email string `json:"email"` } func main() { person := Person{ Name: "John Doe", Age: 30, Email: "[email protected]", } jsonData, err := json.Marshal(person) if err != nil { fmt.Println("JSON encoding error:", err) return } fmt.Println(string(jsonData)) } ``` 上述代码将 `person` 对象编码为 JSON 字节切片,并使用 `fmt.Println` 将 JSON 数据以字符串形式打印输出。
json.Unmarshal
用于将 JSON 格式的字节切片解码为对应的 Go 对象。````go
package main
import (
"encoding/json" "fmt"
)
type Person struct {
Name string `json:"name"` Age int `json:"age"` Email string `json:"email"`
}
func main() {
jsonData := []byte(`{"name":"John Doe","age":30,"email":"[email protected]"}`) var person Person err := json.Unmarshal(jsonData, &person) if err != nil { fmt.Println("JSON decoding error:", err) return } fmt.Println(person.Name, person.Age, person.Email)
}
```
上述代码将 JSON 格式的字节切片
jsonData
解码为person
对象,并使用fmt.Println
打印输出person
对象的字段值。
需要注意的是,json.Marshal
和 json.Unmarshal
在处理 JSON 和 Go 对象之间的映射时,依赖于 Go 对象的字段标签(tag)。标签通过 json:"tagname"
的形式添加到结构体字段上,用于指定 JSON 对象中对应字段的名称。这样可以在编码和解码过程中正确地映射字段和 JSON 键名。
版权归原作者 abytecoder 所有, 如有侵权,请联系我们删除。