首頁 >後端開發 >Golang >如何在 Go Structs 中對 MongoDB 和 JSON 編碼使用不同的欄位名稱?

如何在 Go Structs 中對 MongoDB 和 JSON 編碼使用不同的欄位名稱?

DDD
DDD原創
2024-12-03 01:06:10783瀏覽

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

克服MongoDB 結構標記和JSON 編碼的限制

從MongoDB 資料庫存取資料並隨後將其編碼為JSON 時,如果您願意,可能會遇到挑戰為每種格式使用不同的欄位名稱。例如,雖然 MongoDB 可能需要名為「pageId」的字段,但您可能更願意將其編碼為 JSON 中的「pageId」。

多重標籤定義:被誤解的努力

您最初嘗試為結構定義多個名稱標籤導致失敗。您嘗試使用逗號作為標籤字串分隔符號:

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

但是,這種方法是不正確的。

成功之路:釋放空間的力量

要在結構體中成功定義多個名稱標籤,必須使用空格作為標籤字串分隔符號。應該如何完成:

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

理解基本原理

reflect 套件的文件明確指出標籤字串應由非空字串組成鍵值對。每個鍵值對都以空格分隔,值使用 Go 字串文字語法引用。

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

遵循此約定,您可以有效地為結構體定義多個名稱標籤並實現所需的編碼行為。

以上是如何在 Go Structs 中對 MongoDB 和 JSON 編碼使用不同的欄位名稱?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn