具有相同欄位的兩個結構體型別的 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+ 瀏覽量

啟動您的 職業生涯

透過完成課程獲得認證

開始
廣告