首页 文章

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

提问于
浏览
107

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

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

2 回答

  • 55

    它在 reflect 包的文档中说:

    按照惯例,标记字符串是可选的空格分隔的键:“值”对的串联 . 每个键都是一个非空字符串,由空格(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"`
    }
    
  • 179

    谢谢你接受的答案 .

    以下仅适合像我这样懒惰的人 .

    INCORRECT

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

    CORRECT

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

相关问题