Go语言encoding/json库:JSO解析和编码(附带实例)
Go 语言的 encoding/json 库用于 JSON 解析(解码)和编码:
【实例】使用 encoding/json 库中的 Unmarshal() 函数,把 JSON 字符串转换为与其对应的结构体。代码如下:
【实例】使用 encoding/json 库中的 Marshal() 函数,把结构体转换为与其对应的 JSON 字符串。代码如下:
- 解码 JSON 是指把 JSON 字符串转换为结构体(struct);
- 编码 JSON 与解码 JSON 相反是指把结构体(struct)转换为 JSON 字符串。
Go语言解码JSON
encoding/json 库的 Unmarshal() 函数可以把 JSON 字符串转换为结构体。语法格式如下:func Unmarshal(data []byte, v interface{}) error
【实例】使用 encoding/json 库中的 Unmarshal() 函数,把 JSON 字符串转换为与其对应的结构体。代码如下:
package main import ( "encoding/json" "fmt" ) type Person struct { Name string Age int Sex string } func Unmarshal() { b1 := []byte(`{"Name":"David","Age":26,"Sex":"Male"}`) var m Person json.Unmarshal(b1, &m) fmt.Printf("m: %v\n", m) } func main() { Unmarshal() }运行结果如下:
m: {David 26 Male}
Go语言编码JSON
encoding/json 库的 Marshal() 函数可以把结构体转换为 JSON 字符串。语法格式如下:func Marshal(v interface{}) ([]byte, error)
【实例】使用 encoding/json 库中的 Marshal() 函数,把结构体转换为与其对应的 JSON 字符串。代码如下:
package main import ( "encoding/json" "fmt" ) type Person struct { Name string Age int Sex string } func Marshal() { p := Person{ Name: "David", Age: 26, Sex: "Male", } b, _ := json.Marshal(p) fmt.Printf("b: %v\n", string(b)) } func main() { Marshal() }运行结果如下:
b: {"Name":"David","Age":26,"Sex":"Male"}