handling - Nombres de teclas JSON en minúsculas con JSON Marshal en Go
marshal golang json (2)
Deseo utilizar el paquete "encoding/json"
para ordenar una estructura declarada en uno de los paquetes importados de mi aplicación.
P.ej.:
type T struct {
Foo int
}
Debido a que se importa, todos los campos disponibles (exportados) en la estructura comienzan con una letra mayúscula. Pero deseo tener nombres de teclas minúsculas:
out, err := json.Marshal(&T{Foo: 42})
resultará en
{"Foo": 42}
pero deseo obtener
{"foo": 42}
¿Es posible sortear el problema de alguna manera fácil?
Echa un vistazo a los documentos para la encoding/json.Marshal . Discute el uso de etiquetas de campo struct para determinar cómo se formatea el json generado.
Por ejemplo:
type T struct {
FieldA int `json:"field_a"`
FieldB string `json:"field_b,omitempty"`
}
Esto generará JSON de la siguiente manera:
{
"field_a": 1234,
"field_b": "foobar"
}
Puede hacer su propia estructura con las claves que desea exportar y darles las etiquetas json apropiadas para los nombres en minúsculas. Luego puede copiar la estructura deseada en la suya antes de codificarla como JSON. O si no quieres molestarte en crear una estructura local, probablemente puedas hacer un map[string]interface{}
y codificar eso.