如何在结构中定义多个名称标签 [英] How to define multiple name tags in a struct

查看:98
本文介绍了如何在结构中定义多个名称标签的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I need to get an item from a mongo database, so I defined a struct like this

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

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

Now I also need to encode it to JSON, but it encodes the fields as uppercase (i get PageId instead of pageId) so i also need to define field tags for JSON. I tried something like this but it didn't work:

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

那么,如何在结构中定义多个名称标签呢?

So how can this be done, define multiple name tags in a struct?

推荐答案

reflect软件包的文档中说:

按照惯例,标记字符串是由可选的以空格分隔的键:值"对的串联.每个键都是一个非空字符串,由非控制字符组成,除了空格(U + 0020''),引号(U + 0022'')和冒号(U + 003A':').每个值都用引号引起来使用U + 0022''字符和Go字符串文字语法.

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.

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

What you need to do is to use space instead of comma as tag string separator.

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

这篇关于如何在结构中定义多个名称标签的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆