Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk melakukan penukaran struct di Golang

Bagaimana untuk melakukan penukaran struct di Golang

PHPz
Lepaskan: 2023-03-22 16:37:14
asal
2179 orang telah melayarinya

Bahasa Golang ialah bahasa pengaturcaraan berorientasikan objek, yang sangat mudah dibaca dan diselenggara. Bagi kebanyakan pembangun, adalah lebih mudah dan pantas untuk menggunakan Golang untuk pembangunan. Dalam Golang, struct ialah jenis data yang sangat biasa, yang boleh mewakili satu set atribut objek. Dalam pembangunan sebenar, selalunya perlu untuk menukar antara struct Hari ini kita akan belajar bagaimana Golang melakukan penukaran struct.

Takrifkan struktur

Pertama, mari kita takrifkan struktur:

type Person struct {
    Name    string
    Age     int
    Address Address
}

type Address struct {
    Province string
    City     string
    Street   string
}
Salin selepas log masuk

Dalam kod di atas, kita takrifkan dua Terdapat tiga struktur, satu ialah Orang, yang mengandungi tiga atribut: Nama, Umur dan Alamat, dengan Alamat ialah struktur bersarang.

Tukar struktur kepada JSON

Dalam pembangunan sebenar, kita selalunya perlu menukar struktur kepada format JSON. Pakej pengekodan/json terbina dalam di Golang menyediakan fungsi pengekodan dan penyahkodan JSON yang mudah Kami boleh menggunakan pakej ini untuk menukar struktur kepada data format 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))
}
Salin selepas log masuk

Dalam kod di atas, kami mula-mula mencipta tika Orang, dan kemudian memanggil json.Marshal() untuk menukar tika itu kepada data format JSON. Semasa proses penukaran, jika terdapat ralat, mesej ralat akan dikeluarkan, jika tidak rentetan hasil yang ditukar akan menjadi output.

Tukar JSON kepada struktur

Selain menukar struktur kepada format JSON, kita selalunya perlu menukar data format JSON kepada struktur. Dalam contoh di atas, kami telah menukar orang kepada format JSON Sekarang mari tukar data JSON kepada struktur.

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)
Salin selepas log masuk

Dalam kod di atas, kami mula-mula mentakrifkan data format JSON sebagai jsonStr, dan kemudian memanggil json.Unmarshal() untuk menukarnya menjadi struktur Orang. Begitu juga, jika ralat berlaku semasa proses penukaran, mesej ralat adalah output, jika tidak, contoh struktur Orang yang ditukar adalah output.

Penukaran medan

Dalam sesetengah kes, nama medan data tidak konsisten dengan nama medan dalam struktur Dalam kes ini, penukaran medan diperlukan. Di Golang, ini boleh dicapai dengan menukar nama atribut struktur kepada 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"`
}
Salin selepas log masuk

Dalam kod di atas, kami menambah tag json sebelum nama atribut struktur, yang menentukan nama atribut JSON. Semasa proses penukaran, jika teg wujud, teg akan diguna pakai.

Terdapat tatasusunan dalam struktur

Dalam struktur, mungkin terdapat atribut yang mengandungi tatasusunan. Dalam kes ini, kita perlu melintasi tatasusunan.

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)
    }
}
Salin selepas log masuk

Dalam kod di atas, struktur Orang mengandungi tatasusunan Alamat, yang perlu kita lalui. Semasa proses penukaran, kami boleh menggunakan Unmarshal untuk menukar data format JSON kepada tika struktur Orang, dan kemudian melintasi tatasusunan Alamat untuk mengeluarkan atribut Wilayah, Bandar dan Jalan bagi setiap tika Alamat.

Ringkasan

Di Golang, penukaran struct ialah operasi yang agak kerap. Melalui pengenalan artikel ini, kami telah mempelajari cara Golang menukar struct dan JSON antara satu sama lain. Untuk beberapa kes khas, seperti penukaran medan dan traversal tatasusunan, pemahaman dan operasi yang lebih mendalam diperlukan. Fungsi penukaran struktur Golang menjadikan pembangunan kami lebih mudah dan lebih pantas.

Atas ialah kandungan terperinci Bagaimana untuk melakukan penukaran struct di Golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Isu terkini
Fungsi dan struktur
daripada 1970-01-01 08:00:00
0
0
0
c++ - Soalan tentang jadual linear
daripada 1970-01-01 08:00:00
0
0
0
c++ - Objek fungsi generik.
daripada 1970-01-01 08:00:00
0
0
0
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan