Go语言将结构体数据保存为JSON格式数据
JSON 格式是一种对象文本格式,是当前互联网最常用的信息交换格式之一。在Go语言中,可以使用 json.Marshal() 函数将结构体格式的数据格式化为 JSON 格式。 想要使用 json.Marshal() 函数需要我们先引入 encoding/json 包,示例代码如下: package main import ( "encoding/json" "fmt" ) func main() { // 声明技能结构体 type Skill struct { Name string Level int } // 声明角色结构体 type Actor struct { Name string Age int Skills []Skill } // 填充基本角色数据 a := Actor{ Name: "cow boy",Age: 37,Skills: []Skill{ {Name: "Roll and roll",Level: 1},{Name: "Flash your dog eye",Level: 2},{Name: "Time to have Lunch",Level: 3},},} result,err := json.Marshal(a) if err != nil { fmt.Println(err) } jsonStringData := string(result) fmt.Println(jsonStringData) }运行结果如下:
{ 提示:为了便于查看这里将输出结果做了格式化处理。 在转换 JSON 格式时,JSON 的各个字段名称默认使用结构体的名称,如果想要指定为其它的名称我们可以在声明结构体时添加一个`json:" "` 标签,在" " 中可以填入我们想要的内容,代码如下所示:package main import ( "encoding/json" "fmt" ) func main() { // 声明技能结构体 type Skill struct { Name string `json:"name"` Level int `json:"level"` } // 声明角色结构体 type Actor struct { Name string Age int Skills []Skill } // 填充基本角色数据 a := Actor{ Name: "cow boy",err := json.Marshal(a) if err != nil { fmt.Println(err) } jsonStringData := string(result) fmt.Println(jsonStringData) }运行结果如下:
{ 我们还可以在上面的标签的 " " 中加入 omitempty(使用逗号, 与前面的内容分隔),来过滤掉转换的 JSON 格式中的空值,如下所示:package main import ( "encoding/json" "fmt" ) func main() { // 声明技能结构体 type Skill struct { Name string `json:"name,omitempty"` Level int `json:"level"` } // 声明角色结构体 type Actor struct { Name string Age int Skills []Skill } // 填充基本角色数据 a := Actor{ Name: "cow boy",Skills: []Skill{ {Name: "",{Name: "Flash your dog eye"},
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |