Home >Backend Development >Golang >How Can I Use Different Field Names for MongoDB and JSON Encoding in Go Structs?
When accessing data from a MongoDB database and subsequently encoding it to JSON, you may encounter a challenge if you wish to use different field names for each format. For instance, while MongoDB may require a field named "pageId," you may prefer to encode it as "pageId" in JSON.
Multiple Tag Definition: A Misunderstood Endeavor
Your initial attempt to define multiple name tags for a struct resulted in failure. You attempted to use commas as tag string separators:
type Page struct { PageId string `bson:"pageId",json:"pageId"` Meta map[string]interface{} `bson:"meta",json:"pageId"` }
However, this approach is incorrect.
The Path to Success: Unleashing the Power of Space
To successfully define multiple name tags in a struct, you must use spaces as tag string separators. Here's how it should be done:
type Page struct { PageId string `bson:"pageId" json:"pageId"` Meta map[string]interface{} `bson:"meta" json:"meta"` }
Understanding the Rationale
The documentation for the reflect package clearly states that tag strings should consist of non-empty strings with key-value pairs. Each key-value pair is separated by a space, and values are quoted using Go string literal syntax.
Each value is quoted using U+0022 '"' characters and Go string literal syntax.
By following this convention, you can effectively define multiple name tags for your struct and achieve the desired encoding behavior.
The above is the detailed content of How Can I Use Different Field Names for MongoDB and JSON Encoding in Go Structs?. For more information, please follow other related articles on the PHP Chinese website!