Go-标准库-encoding(一)

2023-04-22 08:56:26 浏览数 (1)

encoding 包是 Go 标准库中的一个重要包,主要用于数据编码和解码。encoding 包中包含了许多常用的数据编码和解码算法,如 JSON、XML、CSV、Base64 等,这些算法可以帮助我们将数据从一种格式转换为另一种格式,便于在不同的系统之间传输和处理。

JSON 编码和解码

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于阅读和编写。Go 标准库中的 encoding/json 包提供了 JSON 数据的编码和解码功能。

编码

encoding/json 包中的 Marshal() 函数可以将 Go 中的结构体、map、切片等数据类型编码成 JSON 格式的字符串。下面是一个简单的 JSON 编码示例:

代码语言:javascript复制
package main

import (
	"encoding/json"
	"fmt"
)

type Person struct {
	Name string `json:"name"`
	Age  int    `json:"age"`
}

func main() {
	p := Person{
		Name: "Alice",
		Age:  18,
	}
	b, err := json.Marshal(p)
	if err != nil {
		fmt.Println("error:", err)
		return
	}
	fmt.Println(string(b))
}

在上面的示例代码中,我们定义了一个名为 Person 的结构体,该结构体有两个字段 NameAge,使用 json 标签指定了在 JSON 格式中对应的字段名。在 main() 函数中,我们创建了一个 Person 类型的变量 p,然后使用 json.Marshal() 函数将其编码成 JSON 格式的字符串,并打印出来。

解码

encoding/json 包中的 Unmarshal() 函数可以将 JSON 格式的字符串解码成 Go 中的数据类型。下面是一个简单的 JSON 解码示例:

代码语言:javascript复制
package main

import (
	"encoding/json"
	"fmt"
)

type Person struct {
	Name string `json:"name"`
	Age  int    `json:"age"`
}

func main() {
	jsonStr := `{"name":"Bob","age":20}`
	var p Person
	err := json.Unmarshal([]byte(jsonStr), &p)
	if err != nil {
		fmt.Println("error:", err)
		return
	}
	fmt.Println(p)
}

在上面的示例代码中,我们定义了一个名为 Person 的结构体,该结构体有两个字段 NameAge,使用 json 标签指定了在 JSON 格式中对应的字段名。在 main() 函数中,我们定义了一个 JSON 格式的字符串 jsonStr,然后使用 json.Unmarshal() 函数将其解码成 Person 类型的变量 p,最后打印出 p

go

0 人点赞