json - 如何在结构中定义多个名称标签

标签 json struct go

我需要从 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"`
}

那么如何做到这一点,在一个结构体中定义多个名称标签呢?

最佳答案

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

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

它在 documentation of the reflect package 中说:

By convention, tag strings are a concatenation of optionally space-separated key:"value" pairs. Each key is a non-empty string consisting of non-control characters other than space (U+0020 ' '), quote (U+0022 '"'), and colon (U+003A ':'). Each value is quoted using U+0022 '"' characters and Go string literal syntax.

关于json - 如何在结构中定义多个名称标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18635671/

相关文章:

python - 在列表理解中将字符串添加到字典

c - 无效的初始化程序编译器错误在结构数组的malloc

go - 在服务器上启动golang

javascript - 如何将 JSON 对象转换为 Javascript 数组

json - 如何使用 jq 过滤 JSON 对象数组?

c - 使用函数将地址写入结构中的指针失败

c - 输入数据到结构

json.Marshal(struct) 返回 "{}"

json - Golang 编码/json 编码添加 null

json - Grails在BootStrap中注册了一个DateMarshaller,引发了异常,即rails.converters.JSON无法转换为grails.converters.XML