如何在一个结构中定义多个名称标记

我需要从 mongo 数据库中获取一个条目,所以我定义了这样的结构

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

现在我还需要将其编码为 JSON,但它将字段编码为大写(我得到的是 PageId 而不是 pageId) ,因此我还需要为 JSON 定义字段标记。我尝试过这样的方法,但是没有用:

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

那么如何才能做到这一点,在一个结构中定义多个名称标记?

76093 次浏览

您需要做的是使用空格而不是逗号作为标记字符串分隔符。

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

它在 reflect软件包的文档上说:

按照约定,标记字符串是可选的空格分隔键: “ value”对的连接。每个键是一个非空字符串,由空格(U + 0020’)、引号(U + 0022’”’)和冒号(U + 003 A’:’)以外的非控制字符组成。每个值都使用 U + 0022’”字符和 Go 字符串文本语法引用。

谢谢你的回答。

下面就是给像我这样懒惰的人看的。

不正确

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:"pageId"`
}