淘先锋技术网

首页 1 2 3 4 5 6 7

JSON是一种常用的数据交换格式,它是轻量级的、易于阅读和编写的,可以方便的用于不同语言之间的数据传输和交换。在使用JSON的过程中,我们经常需要将数据打包成结构体数组,以便于传输和处理。

如下展示了一个结构体数组:

type Employee struct {
Name string
Age int
Salary float64
}
employees := []Employee {
Employee{"Tom", 29, 8000.0},
Employee{"John", 35, 10000.0},
Employee{"Bob", 27, 6000.0},
}

将上述结构体数组打包成JSON格式数据可以通过json.Marshal()函数来实现:

import "encoding/json"
jsonBytes, err := json.Marshal(employees)
if err != nil {
fmt.Errorf("Error: %s", err)
}

打包后的JSON格式数据如下所示:

[
{
"Name": "Tom",
"Age": 29,
"Salary": 8000.0
},
{
"Name": "John",
"Age": 35,
"Salary": 10000.0
},
{
"Name": "Bob",
"Age": 27,
"Salary": 6000.0
}
]

在验证JSON数据时,可以通过json.Unmarshal()函数将JSON数据解码成结构体数组:

decodedEmployees := []Employee{}
err = json.Unmarshal(jsonBytes, &decodedEmployees)
if err != nil {
fmt.Errorf("Error: %s", err)
}

打包和解包过程中,需要注意JSON数据和结构体数组字段名的对应关系。可以使用tag标签来指定JSON数据中的字段名和结构体数组中的字段名的对应关系:

type Employee struct {
Name string `json:"name"`
Age int `json:"age"`
Salary float64 `json:"salary"`
}

当打包和解包时遇到标签时,会自动进行对应关系的处理。