您好,登錄后才能下訂單哦!
這篇文章主要介紹了Golang怎么進行struct轉換的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇Golang怎么進行struct轉換文章都會有所收獲,下面我們一起來看看吧。
首先,我們先來定義一個結構體:
type Person struct {
Name string
Age int
Address Address
}
type Address struct {
Province string
City string
Street string
}
在以上的代碼中,我們定義了兩個結構體,一個是Person,它包含了Name、Age和Address三個屬性,其中Address是一個嵌套的結構體。
在實際的開發中,我們經常需要將結構體轉成JSON格式。Golang中內置的encoding/json包提供了方便的JSON編碼和解碼功能,我們可以使用該包將結構體轉成JSON格式的數據。
import "encoding/json"
func main() {
person := Person{Name: "Tom", Age: 18, Address: Address{Province: "Beijing", City: "Beijing", Street: "Wudaokou"}}
jsonBytes, err := json.Marshal(person)
if err != nil {
fmt.Println(err)
}
fmt.Println(string(jsonBytes))
}
以上代碼中,我們先創建了一個Person實例,然后調用json.Marshal()將該實例轉成了JSON格式的數據。在轉換過程中,如果存在錯誤,將會輸出錯誤信息,否則輸出轉換后結果的字符串。
除了將結構體轉成JSON格式,我們還經常需要將JSON格式的數據轉成結構體。在上面的例子中,我們已經將person轉成了JSON格式,現在我們來將JSON數據轉成結構體。
jsonStr := `{"Name":"Tom","Age":18,"Address":{"Province":"Beijing","City":"Beijing","Street":"Wudaokou"}}`
person := Person{}
err := json.Unmarshal([]byte(jsonStr), &person)
if err != nil {
fmt.Println(err)
}
fmt.Println(person)
在以上代碼中,我們先將JSON格式的數據定義為jsonStr,然后調用json.Unmarshal()將其轉成Person結構體。同樣的,在轉換過程中如果出現錯誤,輸出錯誤信息,否則輸出轉換后的Person結構體實例。
有些情況下,數據的字段名和結構體中字段名不一致,這時候需要進行字段轉換。Golang中,可以通過將結構體的屬性名修改為Tag的方式實現。
type Person struct {
Name string `json:"name"`
Age int `json:"age"`
Address Address
}
type Address struct {
Province string `json:"province"`
City string `json:"city"`
Street string `json:"street"`
}
以上代碼中,我們在結構體屬性名前添加了json tag,它指定了JSON的屬性名。在轉換過程中,如果tag存在,將以tag為準。
在結構體中,可能會存在包含數組的屬性。對于這種情況,我們需要對數組進行遍歷操作。
type Person struct {
Name string `json:"name"`
Age int `json:"age"`
Address []Address `json:"address"`
}
type Address struct {
Province string `json:"province"`
City string `json:"city"`
Street string `json:"street"`
}
func main() {
jsonStr := `{"name":"Tom","age":18,"address":[{"province":"Beijing","city":"Beijing","street":"Wudaokou"},{"province":"Henan","city":"Kaifeng","street":"Longting"}]}`
person := Person{}
err := json.Unmarshal([]byte(jsonStr), &person)
if err != nil {
fmt.Println(err)
}
for _, a := range person.Address {
fmt.Println(a.Province, a.City, a.Street)
}
}
以上代碼中,Person結構體中包含了一個Address的數組,我們需要對其進行遍歷。在轉換過程中,我們可以通過Unmarshal將JSON格式的數據轉成Person結構體實例,然后通過對Address數組進行遍歷操作,輸出每個Address實例的Province、City和Street屬性。
關于“Golang怎么進行struct轉換”這篇文章的內容就介紹到這里,感謝各位的閱讀!相信大家對“Golang怎么進行struct轉換”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。