Cómo definir varias etiquetas de nombre en una estructura
Necesito obtener un elemento de una base de datos mongo, así que definí una estructura como esta
type Page struct {
PageId string `bson:"pageId"`
Meta map[string]interface{} `bson:"meta"`
}
Ahora también necesito codificarlo en JSON, pero codifica los campos en mayúsculas (obtengo PageId en lugar de pageId), por lo que también necesito definir etiquetas de campo para JSON. Probé algo como esto, pero no funcionó:
type Page struct {
PageId string `bson:"pageId",json:"pageId"`
Meta map[string]interface{} `bson:"meta",json:"pageId"`
}
Entonces, ¿cómo se puede hacer esto, definir múltiples etiquetas de nombre en una estructura?
2 answers
Dice en la documentación del paquete reflect
:
Por convención, las cadenas de etiquetas son una concatenación de pares clave:"valor" opcionalmente separados por espacios. Cada clave es una cadena no vacía que consiste en caracteres no de control distintos del espacio (U + 0020''), la comilla (U+0022'"') y los dos puntos (U+003A':'). Cada valor se cita usando caracteres U+0022 '"' y sintaxis literal de cadena Go.
Lo que debe hacer es usar espacio en lugar de coma como cadena de etiqueta separador.
type Page struct {
PageId string `bson:"pageId" json:"pageId"`
Meta map[string]interface{} `bson:"meta" json:"pageId"`
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-10-13 09:03:41
Gracias por la respuesta aceptada.
A continuación es solo para la gente perezosa como yo.
INCORRECTO
type Page struct {
PageId string `bson:"pageId",json:"pageId"`
Meta map[string]interface{} `bson:"meta",json:"pageId"`
}
CORRECTO
type Page struct {
PageId string `bson:"pageId" json:"pageId"`
Meta map[string]interface{} `bson:"meta" json:"pageId"`
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-06-04 10:18:52