具有相同字段的两个结构体类型的 Go 语言程序,每个字段都带有一个“JSON”标签
结构体类型用于构建由字段组成的自定义数据结构。这些字段反映了结构的特性或属性。能够向字段添加标签,例如“JSON”标签,在将结构序列化或反序列化为/从 JSON 格式时提供有关字段的其他元数据,是结构体类型的一个有价值的功能。
在本文中,我们将编写 Go 语言程序来表示每个字段都带有一个 JSON 标签的结构体。
type StructName struct { Field1 DataType1 `Tag1:"Value1" Tag2:"Value2"` Field2 DataType2 `Tag3:"Value3" Tag4:"Value4"` // ... FieldN DataTypeN `TagN:"ValueN"` }
结构体名称 - 结构体类型的名称。
字段名称 - 字段的名称。
数据类型 - 字段的数据类型。
标签始终用 (``) 反引号括起来,并具有 TagKey:“TagValue” 的格式。
算法
步骤 1 - 此程序导入“encoding/json”和“fmt”作为必要的包
步骤 2 - 创建两个名为 Person 和 Employee 的结构体,这些结构体具有字段 Name、Age 和 Address,以及相应的 json 标签
步骤 3 - 创建一个 main 函数
步骤 4 - 在 main 中,创建一个名为 person 的 Person 结构体对象,并使用一些值初始化其字段
步骤 5 - 在此步骤中,创建一个名为 employee 的 Employee 结构体对象,并使用一些值初始化其字段
步骤 6 - 然后,使用 json.Marshal() 方法将 person 和 employee 结构体转换为 JSON 格式
步骤 7 - 将获得的输出存储在 personJSON 和 employeeJSON 变量中
步骤 8 - 最后,使用 fmt.Println() 打印 person 和 employee 结构体的 JSON 表示形式。
示例
在此示例中,我们将编写一个 Go 语言程序来表示两个名为 Person 和 Employee 的结构体,每个字段都带有一个 JSON 标签。
package main import ( "encoding/json" "fmt" ) type Person struct { Name string `json:"name"` Age int `json:"age"` Address string `json:”address”` } type Employee struct { Name string `json:"emp_name"` Age int `json:"emp_age"` Address string `json:"emp_address"` } func main() { person := Person{ Name: "Karan", Age: 24, Address: "Hauz Khas", } employee := Employee{ Name: "Tarun", Age: 26, Address: "Saket", } personJSON, _ := json.Marshal(person) employeeJSON, _ := json.Marshal(employee) fmt.Println("Person JSON:", string(personJSON)) fmt.Println("Employee JSON:", string(employeeJSON)) }
输出
Person JSON: {"name":"Karan","age":24,"address":"Hauz Khas"} Employee JSON: {"emp_name":"Tarun","emp_age":26,"emp_address":"Saket"}
示例
在此示例中,我们将编写一个 Go 语言程序来表示两个名为 Car 和 Vehicle 的结构体,每个字段都带有一个 JSON 标签。
package main import ( "encoding/json" "fmt" ) type Car struct { Brand string `json:"brand"` Model string `json:"model"` Year int `json:"year"` Engine string `json:"engine"` } type Vehicle struct { Brand string `json:"manufacturer"` Model string `json:"model"` Year int `json:"production_year"` Engine string `json:"engine_type"` } func main() { car := Car{ Brand: "Hyundai", Model: "Camry", Year: 2022, Engine: "V6", } vehicle := Vehicle{ Brand: "Honda", Model: "Civic", Year: 2022, Engine: "Inline-4", } carJSON, _ := json.Marshal(car) vehicleJSON, _ := json.Marshal(vehicle) fmt.Println("Car JSON:", string(carJSON)) fmt.Println("Vehicle JSON:", string(vehicleJSON)) }
输出
Car JSON: {"brand":"Hyundai","model":"Camry","year":2022,"engine":"V6"} Vehicle JSON: {"manufacturer":"Honda","model":"Civic","production_year":2022,"engine_type":"Inline-4"}
结论
在本文中,我们讨论了如何编写一个程序来表示每个字段都带有一个 JSON 标签的结构体。我们使用两个示例编译并执行了在每个字段上都带有 JSON 标签的结构体的程序。在第一个示例中,我们使用了 Person 和 Employee 结构体,在第二个示例中,我们使用了 Car 和 Vehicle 结构体。