Go语言解析Json

Go语言解析Json教程

Json 的英文全称为 JavaScript Object Notation ,即 JavaScript 对象简谱,是一种轻量级的数据交换格式,可以用于存储和交换文本信息。

Golang 中,解析 Json 需要使用 结构体 加上使用 Go 语言内置的包 “encoding/json” 来处理。

Go语言解析Json

语法

func Unmarshal(data []byte, v interface{}) error

参数

参数 描述
data 需要解析的数据。
v 解析出来的数据存储的结构体。

返回值

如果出现错误,则返回 error 信息,否则,返回 nil。

说明

将 json 串 data 解码到结构体 v 中,如果有错误,返回 error 信息。

Go语言结构体转Json

语法

func Marshal(v interface{}) ([]byte, error)

参数

参数 描述
v 要转 json 的结构体。

返回值

类型 描述
[]byte 转换成的 Json 数据。
error 转换的错误信息,如果成功,则返回 nil。

说明

将结构体数据 v 编码为 json 数据 []byte,并返回 error 信息。

案例

Go语言解析Json

将结构体转成 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) }

程序运行后,控制台输出如下:

33_golang结构体解析json.png

我们定义了一个结构体 Person,该结构体定义有两个字段,一个是 string 类型的 Name,一个是 int 类型的 Age。

接着我们将一个 json 格式的字符串 jsonStr 转成结构体 Person,并使用 print 打印结构体变量,我们发现,json 字符串已经被转到了结构体中。

Go语言结构体转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)) } }

程序运行后,控制台输出如下:

34_golang结构体解析json.png

我们定义了一个结构体 Person,并且将结构体 Person 的数据转成 Json 字符串。

Golang结构体定义使用总结

在 Golang 中,解析 Json 需要使用结构体加上使用 Go 语言内置的包 “encoding/json” 来处理。Go 语言解析 Json语法:

func Unmarshal(data []byte, v interface{}) error

Go 语言结构体转 Json 语法:

func Marshal(v interface{}) ([]byte, error)