具有相同字段的两个结构体类型的 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 结构体。

更新于: 2023年7月6日

1K+ 浏览量

启动您的 职业生涯

通过完成课程获得认证

开始
广告