Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk Menukar Go Struct kepada Peta Menggunakan Tag JSON sebagai Kekunci?

Bagaimana untuk Menukar Go Struct kepada Peta Menggunakan Tag JSON sebagai Kekunci?

Linda Hamilton
Lepaskan: 2024-12-09 20:54:15
asal
209 orang telah melayarinya

How to Convert a Go Struct to a Map Using JSON Tags as Keys?

Menukar Struct kepada Peta di Golang dengan Kekunci JSON

Soalan ini mencari kaedah untuk menukar struct Golang kepada peta, mengekalkan tag JSON sebagai kunci dalam peta yang terhasil . Pada mulanya, respons diterokai menggunakan pakej reflect.

Penyelesaian alternatif disediakan oleh pakej structs (https://github.com/fatih/structs) yang menawarkan fungsi komprehensif untuk bekerja dengan struct:

  • ConvertToMap: Menukar struct kepada peta
  • ExtractFields: Mendapat sekeping nama medan daripada struct
  • ExtractValues: Mengekstrak sekeping nilai medan daripada struct
  • IsStruct: Menyemak jika disediakan antara muka ialah struct atau penunjuk kepada struct
  • IsInitialized: Mengesahkan jika struct dimulakan

Pakej structs menyokong medan tanpa nama dan struct bersarang, dan membenarkan untuk menapis medan tertentu menggunakan tag medan. Contohnya:

type Server struct {
    Name    string  `json:"server_name"`
    ID      int32   `json:"server_id"`
    Enabled bool     `json:"is_enabled"`
}

s := &Server{
    Name:    "gopher",
    ID:      123456,
    Enabled: true,
}

// {"server_name": "gopher", "server_id": 123456, "is_enabled": true}
m := structs.Map(s)
Salin selepas log masuk

Dalam contoh ini, teg json digunakan sebagai kunci peta, menghasilkan perwakilan peta yang mematuhi JSON bagi struct. Pakej structs menyediakan alat serba boleh untuk mengurus struct dan menukarnya kepada peta, menangani permintaan asal dengan berkesan.

Atas ialah kandungan terperinci Bagaimana untuk Menukar Go Struct kepada Peta Menggunakan Tag JSON sebagai Kekunci?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan