Как определить несколько тегов имен в структуре
Мне нужно получить элемент из базы данных 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
В документации пакета reflect
говорится:
По соглашению строки тегов представляют собой конкатенацию опционально разделенных пробелами ключей: пары "значение". Каждый ключ представляет собой непустую строку, состоящую из неконтролируемых символов, отличных от пробела (U + 0020 ''), цитаты (U + 0022 '"') и двоеточия (U + 003A ':'). Каждое значение цитируется используя символы U + 0022 '' 'и Go string literal.
Что вам нужно сделать, так это использовать пространство вместо запятой в качестве разделителя строки тега.
type Page struct {
PageId string 'bson:"pageId" json:"pageId"'
Meta map[string]interface{} 'bson:"meta" json:"meta"'
}
Ответ 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"`
}