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