中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Golang怎么進行struct轉換

發布時間:2023-03-22 17:11:41 來源:億速云 閱讀:114 作者:iii 欄目:編程語言

這篇文章主要介紹了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

在實際的開發中,我們經常需要將結構體轉成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格式,我們還經常需要將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轉換”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

湾仔区| 合水县| 扬州市| 普兰店市| 宁阳县| 文山县| 扎鲁特旗| 仪征市| 淮滨县| 遂宁市| 大埔区| 兴化市| 吴川市| 安远县| 罗定市| 文成县| 涿州市| 铜川市| 芜湖县| 乐亭县| 沙坪坝区| 绥棱县| 得荣县| 江西省| 饶阳县| 湘潭市| 噶尔县| 抚顺县| 无锡市| 昌邑市| 海淀区| 方正县| 怀宁县| 宣城市| 衢州市| 涡阳县| 文登市| 绥芬河市| 云霄县| 肥东县| 太原市|