Json 的英文全称为 JavaScript Object Notation ,即 JavaScript 对象简谱,是一种轻量级的数据交换格式,可以用于存储和交换文本信息。
在 Golang 中,解析 Json 需要使用 结构体 加上使用 Go 语言内置的包 “encoding/json” 来处理。
func Unmarshal(data []byte, v interface{}) error
参数 | 描述 |
---|---|
data | 需要解析的数据。 |
v | 解析出来的数据存储的结构体。 |
如果出现错误,则返回 error 信息,否则,返回 nil。
将 json 串 data 解码到结构体 v 中,如果有错误,返回 error 信息。
func Marshal(v interface{}) ([]byte, error)
参数 | 描述 |
---|---|
v | 要转 json 的结构体。 |
类型 | 描述 |
---|---|
[]byte | 转换成的 Json 数据。 |
error | 转换的错误信息,如果成功,则返回 nil。 |
将结构体数据 v 编码为 json 数据 []byte,并返回 error 信息。
将结构体转成 json
package main
import (
"encoding/json"
"fmt"
)
type Person struct {
Name string
Age int
}
func main() {
fmt.Println("嗨客网(www.haicoder.net)")
//将结构体转成 json
jsonStr := `{"Name":"HaiCoder","Age":18}`
var p Person
if err := json.Unmarshal([]byte(jsonStr), &p); err != nil{
fmt.Println("Error =", err)
return
}
fmt.Println("Person =", p)
}
程序运行后,控制台输出如下:
我们定义了一个结构体 Person,该结构体定义有两个字段,一个是 string 类型的 Name,一个是 int 类型的 Age。
接着我们将一个 json 格式的字符串 jsonStr 转成结构体 Person,并使用 print 打印结构体变量,我们发现,json 字符串已经被转到了结构体中。
将 Go 语言结构体转成 Json
package main
import (
"encoding/json"
"fmt"
)
type Person struct {
Name string
Age int
}
func main() {
fmt.Println("嗨客网(www.haicoder.net)")
//将 Go语言结构体转成 Json
person := &Person{
Name:"HaiCoder",
Age :18,
}
if jsonStr, err := json.Marshal(person); err != nil{
fmt.Println("Err =", err)
}else{
fmt.Println("JsonStr =", string(jsonStr))
}
}
程序运行后,控制台输出如下:
我们定义了一个结构体 Person,并且将结构体 Person 的数据转成 Json 字符串。
在 Golang 中,解析 Json 需要使用结构体加上使用 Go 语言内置的包 “encoding/json” 来处理。Go 语言解析 Json语法:
func Unmarshal(data []byte, v interface{}) error
Go 语言结构体转 Json 语法:
func Marshal(v interface{}) ([]byte, error)