如何在结构中定义多个名称标签
Posted
技术标签:
【中文标题】如何在结构中定义多个名称标签【英文标题】:How to define multiple name tags in a struct 【发布时间】:2013-09-09 05:58:50 【问题描述】:我需要从 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"`
那么如何做到这一点,在一个结构体中定义多个名称标签呢?
【问题讨论】:
【参考方案1】:上面写着in the documentation of the reflect
package:
按照惯例,标签字符串是可选用空格分隔的键:“值”对的串联。每个键都是一个非空字符串,由除空格 (U+0020 ' ')、引号 (U+0022 '"') 和冒号 (U+003A ':') 以外的非控制字符组成。每个值都被引用使用 U+0022 '"' 字符和 Go 字符串文字语法。
您需要做的是使用空格而不是逗号作为标签字符串分隔符。
type Page struct
PageId string `bson:"pageId" json:"pageId"`
Meta map[string]interface `bson:"meta" json:"meta"`
【讨论】:
另外,请确保它仅由空格分隔,而不是由制表符分隔。参看。 ***.com/questions/20215510/…【参考方案2】:感谢您接受的答案。
以下内容仅供像我这样的懒人使用。
不正确
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"`
【讨论】:
以上是关于如何在结构中定义多个名称标签的主要内容,如果未能解决你的问题,请参考以下文章
从多个指标(相同的标签集,不同的名称)绘制 rate() 时如何避免“向量不能包含具有相同标签集的指标”错误
如何在swift ios中的自定义TableView单元格中显示多个字符串值到多个标签?
使用 purrr 时如何自定义 ggplot2 facet_grid 标签中的文本?
如何在 Grafana 表中显示多个 Prometheus 服务器名称?