Deseo utilizar el "encoding/json"
paquete para ordenar una estructura declarada en uno de los paquetes importados de mi aplicación.
P.ej.:
type T struct {
Foo int
}
Como se importa, todos los campos disponibles (exportados) en la estructura comienzan con una letra mayúscula. Pero deseo tener nombres clave en minúsculas:
out, err := json.Marshal(&T{Foo: 42})
resultará en
{"Foo": 42}
pero deseo conseguir
{"foo": 42}
¿Es posible solucionar el problema de alguna manera fácil?
json
go
marshalling
ANisus
fuente
fuente
Respuestas:
Echa un vistazo a los documentos para codificar / json.Marshal . Discute el uso de etiquetas de campo de estructura para determinar cómo se formatea el json generado.
Por ejemplo:
Esto generará JSON de la siguiente manera:
fuente
reflect
paquete.json:"some_tag"
lugar dejson: "some_tag"
. Me mordió esto por un tiempo.Puede crear su propia estructura con las claves que desea exportar y asignarles 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 quiere molestarse en hacer una estructura local, probablemente podría hacer una
map[string]interface{}
y codificar eso.fuente
map[string]interface{}
funcionaría siempre que no termine con objetos / estructuras anidadas