Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Saya Boleh Menggunakan Nama Medan Berbeza untuk Pengekodan MongoDB dan JSON dalam Go Structs?

Bagaimanakah Saya Boleh Menggunakan Nama Medan Berbeza untuk Pengekodan MongoDB dan JSON dalam Go Structs?

DDD
DDDasal
2024-12-03 01:06:10790semak imbas

How Can I Use Different Field Names for MongoDB and JSON Encoding in Go Structs?

Mengatasi Had dalam Penandaan Struktur untuk Pengekodan MongoDB dan JSON

Apabila mengakses data daripada pangkalan data MongoDB dan kemudiannya mengekodkannya kepada JSON, anda mungkin menghadapi cabaran jika anda mahu untuk menggunakan nama medan yang berbeza untuk setiap format. Sebagai contoh, walaupun MongoDB mungkin memerlukan medan bernama "pageId", anda mungkin lebih suka mengekodnya sebagai "pageId" dalam JSON.

Definisi Teg Berbilang: Usaha Yang Salah Faham

Percubaan awal anda untuk mentakrifkan berbilang tanda nama untuk struct mengakibatkan kegagalan. Anda cuba menggunakan koma sebagai pemisah rentetan tag:

type Page struct {
    PageId string                 `bson:"pageId",json:"pageId"`
    Meta   map[string]interface{} `bson:"meta",json:"pageId"`
}

Walau bagaimanapun, pendekatan ini tidak betul.

Laluan Menuju Kejayaan: Melepaskan Kuasa Ruang

Untuk berjaya mentakrifkan berbilang tag nama dalam struct, anda mesti menggunakan ruang sebagai pemisah rentetan tag. Begini caranya:

type Page struct {
    PageId string                 `bson:"pageId" json:"pageId"`
    Meta   map[string]interface{} `bson:"meta" json:"meta"`
}

Memahami Rasional

Dokumentasi untuk pakej reflect dengan jelas menyatakan bahawa rentetan tag hendaklah terdiri daripada rentetan bukan kosong dengan pasangan kunci-nilai. Setiap pasangan nilai kunci dipisahkan oleh ruang dan nilai dipetik menggunakan sintaks literal rentetan Go.

Each value is quoted using U+0022 '"' characters and Go string literal syntax.

Dengan mengikuti konvensyen ini, anda boleh mentakrifkan berbilang tag nama dengan berkesan untuk struct anda dan mencapai pengekodan yang diingini tingkah laku.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menggunakan Nama Medan Berbeza untuk Pengekodan MongoDB dan JSON dalam Go Structs?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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